<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>COMPATIBLE_MODE &#8211; 良的世界</title>
	<atom:link href="https://www.lemonary.cn/tag/compatible_mode/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.lemonary.cn</link>
	<description></description>
	<lastBuildDate>Tue, 18 Mar 2025 03:13:17 +0000</lastBuildDate>
	<language>zh-Hans</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.lemonary.cn/wp-content/uploads/2024/12/profile-150x150.jpg</url>
	<title>COMPATIBLE_MODE &#8211; 良的世界</title>
	<link>https://www.lemonary.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>达梦数据库COMPATIBLE_MODE参数详解</title>
		<link>https://www.lemonary.cn/%e8%be%be%e6%a2%a6%e6%95%b0%e6%8d%ae%e5%ba%93compatible_mode%e5%8f%82%e6%95%b0%e8%af%a6%e8%a7%a3/</link>
					<comments>https://www.lemonary.cn/%e8%be%be%e6%a2%a6%e6%95%b0%e6%8d%ae%e5%ba%93compatible_mode%e5%8f%82%e6%95%b0%e8%af%a6%e8%a7%a3/#respond</comments>
		
		<dc:creator><![CDATA[shine]]></dc:creator>
		<pubDate>Tue, 18 Mar 2025 03:07:53 +0000</pubDate>
				<category><![CDATA[DM]]></category>
		<category><![CDATA[COMPATIBLE_MODE]]></category>
		<guid isPermaLink="false">https://www.lemonary.cn/?p=1773</guid>

					<description><![CDATA[一、参数简介 COMPATIBLE_MODE 参数用于控制 DM 在部分功能处理时与其他数据库管理系统的兼容模 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">一、参数简介</h2>



<p class="wp-block-paragraph">COMPATIBLE_MODE 参数用于控制 DM 在部分功能处理时与其他数据库管理系统的兼容模式。可取值</p>



<ul class="wp-block-list">
<li>0：不兼容</li>



<li>1：兼容SQL92标准</li>



<li>2：兼容ORACLE</li>



<li>3：兼容MS SQL SERVER</li>



<li>4：兼容MYSQL</li>



<li>5：兼容DM6</li>



<li>6：兼容TERADATA。</li>



<li>7：兼容PG</li>



<li>默认为 0。</li>
</ul>



<p class="wp-block-paragraph">用户可在 DM.INI 文件中对该参数进行配置。<br>本文档主要对兼容 ORACLE 数据库时的兼容策略进行详细介绍。</p>



<h2 class="wp-block-heading">二、兼容Oracle</h2>



<p class="wp-block-paragraph">COMPATIBLE_MODE=2，兼容 Oracle。<br>本章节主要介绍 DM 兼容 ORACLE 时的兼容策略。</p>



<h3 class="wp-block-heading">2.1 空串与NULL</h3>



<p class="wp-block-paragraph">DM 区分空串与NULL，但Oracle不区分，Oracle中只有NULL的概念，因此兼容Oracle时，DM在以下几种情形中对空串与NULL进行了兼容处理：</p>



<ul class="wp-block-list">
<li>查询结果为空串</li>



<li>输出函数打印 NULL</li>



<li>加载值为空串的字符串变量/参数</li>



<li>为字符串变量/参数赋值空串</li>



<li>空串与 NULL 串联</li>
</ul>



<h4 class="wp-block-heading">2.1.1 查询结果为空串</h4>



<p class="wp-block-paragraph">兼容 ORACLE 后，当查询结果为空串时显示为 NULL；若不兼容，则显示为空。</p>



<p class="wp-block-paragraph">示例：</p>



<p class="wp-block-paragraph">COMPATIBLE_MODE=0，准备如下测试表。</p>



<pre class="wp-block-code"><code>SQL&gt; DROP TABLE TEST;
SQL&gt; CREATE TABLE TEST(C VARCHAR(10));
SQL&gt; INSERT INTO TEST VALUES('');
SQL&gt; COMMIT;</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=2，当查询结果为空串时显示为 NULL。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT * FROM TEST;

行号       C
---------- ----
1          NULL</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=0，当查询结果为空串时显示为空。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT * FROM TEST;

行号       C
---------- -
1          </code></pre>



<h4 class="wp-block-heading">2.1.2 输出函数打印NULL</h4>



<p class="wp-block-paragraph">兼容 ORACLE 后，输出函数打印的值为 NULL 时打印为空；若不兼容，则打印为NULL。</p>



<p class="wp-block-paragraph">示例：</p>



<p class="wp-block-paragraph">COMPATIBLE_MODE=2，输出函数打印的值为 NULL 时打印为空。</p>



<pre class="wp-block-code"><code>SQL&gt; SET SERVEROUTPUT ON;
SQL&gt; DECLARE
2 A INT;
3 BEGIN
4 A:=NULL;
5 DBMS_OUTPUT.PUT_LINE(A);
6 END;
7 /
DMSQL 过程已成功完成
已用时间: 0.279(毫秒). 执行号:402.</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=0，输出函数打印的值为 NULL 时打印为 NULL。</p>



<pre class="wp-block-code"><code>SQL&gt; SET SERVEROUTPUT ON;
SQL&gt; DECLARE
2 A INT;
3 BEGIN
4 A:=NULL;
5 PRINT A;
6 END;
7 /
NULL
DMSQL 过程已成功完成
已用时间: 0.351(毫秒). 执行号:411.</code></pre>



<h4 class="wp-block-heading">2.1.3 加载值为空串的字符串变量/参数</h4>



<p class="wp-block-paragraph">兼容 ORACLE 后，加载字符串变量/参数时，若字符串为空串则强制转换为NULL；若不兼容，则不进行转换。</p>



<p class="wp-block-paragraph">示例：</p>



<p class="wp-block-paragraph">COMPATIBLE_MODE=0，准备如下测试表。</p>



<pre class="wp-block-code"><code>SQL&gt; DROP TABLE TEST;
SQL&gt; CREATE TABLE TEST(C VARCHAR(10));
SQL&gt; INSERT INTO TEST VALUES('');
SQL&gt; COMMIT;</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=2，执行DECODE函数加载参数 C 时，将空串强制转换为NULL进行相应计算。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT DECODE(C,NULL,10,20) FROM TEST;

行号       DECODE(C,NULL,10,20)
---------- --------------------
1          10</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=0，执行DECODE函数加载参数 C 时，不将空串转换为NULL。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT DECODE(C,NULL,10,20) FROM TEST;

行号       DECODE(C,NULL,10,20)
---------- --------------------
1          20</code></pre>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph">说明：<br>函数 DECODE<br>语法：DECODE(exp, search1, result1, … searchn, resultn[,default])<br>功能：查表译码，DECODE 函数将 exp 与 search1,search2, … searchn 相比较，如果等于 searchx，则返回 resultx，如果没有找到匹配项，则返回 default, 如果未定义 default，返回 NULL。</p>
</blockquote>



<pre class="wp-block-code"><code>例：
SELECT DECODE(1, 1, 'A', 2, 'B');
查询结果：'A'
SELECT DECODE(3, 1, 'A', 2, 'B');
查询结果为：NULL
SELECT DECODE(3, 1, 'A', 2, 'B', 'C');
查询结果为：'C'</code></pre>



<h4 class="wp-block-heading">2.1.4 为字符串变量/参数赋值空串</h4>



<p class="wp-block-paragraph">兼容 ORACLE 后，为字符串变量/参数赋值空串时，将空串强制转换为NULL；若不兼容，则不进行转换。</p>



<p class="wp-block-paragraph">示例：</p>



<p class="wp-block-paragraph">COMPATIBLE_MODE=2，创建测试表，并在测试表中插入空串。</p>



<pre class="wp-block-code"><code>SQL&gt; DROP TABLE TEST;
SQL&gt; CREATE TABLE TEST(C VARCHAR(5));
SQL&gt; INSERT INTO TEST VALUES('');
影响行数 1

已用时间: 0.424(毫秒). 执行号:402.
SQL&gt; COMMIT;</code></pre>



<p class="wp-block-paragraph">将 COMPATIBLE_MODE 设置为 0，重新启动 DM 数据库，查询测试表中数据，可以看出测试表中的数据为 NULL 而非空串。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT * FROM TEST;
行号       C
---------- ----
1          NULL</code></pre>



<h4 class="wp-block-heading">2.1.5 空串与NULL串联</h4>



<p class="wp-block-paragraph">兼容 ORACLE 后，空串与 NULL 串联，返回 NULL；若不兼容，则返回空串。</p>



<p class="wp-block-paragraph">示例：</p>



<p class="wp-block-paragraph">COMPATIBLE_MODE=2，空串与 NULL 串联，返回 NULL。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT NULL||'';

行号       NULL||''
---------- --------
1          NULL</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=0，空串与 NULL 串联，返回空串。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT NULL||'';

行号       NULL||''
---------- --------
1</code></pre>



<h3 class="wp-block-heading">2.2 字符串反转策略</h3>



<p class="wp-block-paragraph">兼容 ORACLE 后，按字节反转字符串；若不兼容，则按字符反转字符串。</p>



<p class="wp-block-paragraph">示例：</p>



<p class="wp-block-paragraph">COMPATIBLE_MODE=2，ORACLE 按字节反转字符串。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT REVERSE('中国');

行号       "REVERSE"('中国')
---------- -----------------
1          ��學�</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=0，DM 按字符反转字符串。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT REVERSE('中国');

行号       "REVERSE"('中国')
---------- -----------------
1          国中</code></pre>



<h3 class="wp-block-heading">2.3 定义DATE类型</h3>



<p class="wp-block-paragraph">兼容 ORACLE 后，定义 DATE 类型时，将 DATE 类型强制转换为DATETIME 类型；若不兼容，则不进行转换。</p>



<p class="wp-block-paragraph">示例：</p>



<p class="wp-block-paragraph">COMPATIBLE_MODE=2，定义 DATE 类型时，将 DATE 类型强制转换为DATETIME类型。</p>



<pre class="wp-block-code"><code>SQL&gt; DROP TABLE TEST;
SQL&gt; CREATE TABLE TEST(C DATE);
SQL&gt; INSERT INTO TEST VALUES(SYSDATE);
SQL&gt; SELECT * FROM TEST;

行号       C
---------- -------------------
1          2021-03-02 09:28:02</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=0，定义 DATE 类型时不会转换为 DATETIME 类型。</p>



<pre class="wp-block-code"><code>SQL&gt; DROP TABLE TEST;
SQL&gt; CREATE TABLE TEST(C DATE);
SQL&gt; INSERT INTO TEST VALUES(SYSDATE);
SQL&gt; SELECT * FROM TEST;

行号       C
---------- ----------
1          2021-03-02</code></pre>



<h3 class="wp-block-heading">2.4 插入字符串结尾空格超长</h3>



<p class="wp-block-paragraph">兼容 ORACLE 后，插入字符串结尾空格超长时，报错；若不兼容，则对超长字符串结尾空格进行截断，使插入字符串长度为定义长度。</p>



<p class="wp-block-paragraph">示例：</p>



<p class="wp-block-paragraph">准备如下测试表。</p>



<pre class="wp-block-code"><code>SQL&gt; DROP TABLE TEST;
SQL&gt; CREATE TABLE TEST(C VARCHAR(3));
SQL&gt; COMMIT;</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=2，插入字符串结尾空格超长，报错。</p>



<pre class="wp-block-code"><code>SQL&gt; INSERT INTO TEST VALUES('ABC   ');
INSERT INTO TEST VALUES('ABC   ');
&#91;-6169]:列&#91;C]长度超出定义.</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=0，插入字符串结尾空格超长，截断结尾空格，使插入的字符串长度为定义长度 3。</p>



<pre class="wp-block-code"><code>SQL&gt; INSERT INTO TEST VALUES('ABC   ');
SQL&gt; SELECT * FROM T3;
行号       C
---------- ---
1          ABC</code></pre>



<h3 class="wp-block-heading">2.5 DEC类型转为字符串</h3>



<p class="wp-block-paragraph">兼容 ORACLE 后，DEC 类型数据转换为字符串时，转换结果小数点右侧结尾不补0；若不兼容，则结尾补 0。</p>



<p class="wp-block-paragraph">示例：</p>



<p class="wp-block-paragraph">COMPATIBLE_MODE=2，DEC 类型数据CAST(2.30000 AS DEC(13,5))转换为字符串时，转换结果小数点右侧结尾不补 0。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT CAST(2.30000 AS DEC(13,5))||'-'||2.322323 FROM DUAL;

行号       CAST(2.3 AS DEC(13,5))||'-'||2.322323
---------- --------------------------------------
1          2.3-2.322323</code></pre>



<p class="wp-block-paragraph">COMPATIBLE_MODE=0，DEC 类型数据CAST(2.30000 AS DEC(13,5))转换为字符串时，转换结果小数点右侧结尾补 0。</p>



<pre class="wp-block-code"><code>SQL&gt; SELECT CAST(2.3 AS DEC(13，5))||'-'||2.322323;

行号       CAST(2.3 AS DEC(13,5))||'-'||2.322323
---------- --------------------------------------
1          2.30000-2.322323</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.lemonary.cn/%e8%be%be%e6%a2%a6%e6%95%b0%e6%8d%ae%e5%ba%93compatible_mode%e5%8f%82%e6%95%b0%e8%af%a6%e8%a7%a3/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
