<?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>CASE WHEN &#8211; 良的世界</title>
	<atom:link href="https://www.lemonary.cn/tag/case-when/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.lemonary.cn</link>
	<description></description>
	<lastBuildDate>Thu, 02 Jan 2025 07:04:34 +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>CASE WHEN &#8211; 良的世界</title>
	<link>https://www.lemonary.cn</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>达梦数据库中的CASE WHEN语句</title>
		<link>https://www.lemonary.cn/%e8%be%be%e6%a2%a6%e6%95%b0%e6%8d%ae%e5%ba%93%e4%b8%ad%e7%9a%84case-when%e8%af%ad%e5%8f%a5/</link>
					<comments>https://www.lemonary.cn/%e8%be%be%e6%a2%a6%e6%95%b0%e6%8d%ae%e5%ba%93%e4%b8%ad%e7%9a%84case-when%e8%af%ad%e5%8f%a5/#respond</comments>
		
		<dc:creator><![CDATA[shine]]></dc:creator>
		<pubDate>Thu, 02 Jan 2025 07:04:32 +0000</pubDate>
				<category><![CDATA[DM]]></category>
		<category><![CDATA[CASE WHEN]]></category>
		<guid isPermaLink="false">https://www.lemonary.cn/?p=1248</guid>

					<description><![CDATA[很多客户在执行CASE WHEN语句时报错，总怀疑是DM数据库的BUG，但其实不然。本文就来讲解一下。 执行如 [&#8230;]]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">很多客户在执行CASE WHEN语句时报错，总怀疑是DM数据库的BUG，但其实不然。本文就来讲解一下。</p>



<p class="wp-block-paragraph">执行如下SQL</p>



<pre class="wp-block-code"><code>SELECT
        CASE WHEN INSTR('1100', ',') > 0 THEN LEFT('1100', INSTR('1100', ',')-1) ELSE '1100' END AS STR
FROM
        DUAL;</code></pre>



<p class="wp-block-paragraph">报错：[-6803]：非法的参数数据。原因是LEFT(&#8216;1100&#8217;, INSTR(&#8216;1100&#8217;, &#8216;,&#8217;)-1)这部分计算完是LEFT(&#8216;1100&#8217;, -1)，-1是不符合参数规则的，所以导致整个SQL报错。</p>



<p class="wp-block-paragraph">可以通过添加HINT来解决</p>



<pre class="wp-block-code"><code>SELECT /*+CASE_WHEN_CVT_IFUN(8)*/
        CASE WHEN INSTR('1100', ',') > 0 THEN LEFT('1100', INSTR('1100', ',')-1) ELSE '1100' END AS STR
FROM
        DUAL;</code></pre>



<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="212" src="https://www.lemonary.cn/wp-content/uploads/2025/01/image-1024x212.png" alt="" class="wp-image-1249" srcset="https://www.lemonary.cn/wp-content/uploads/2025/01/image-1024x212.png 1024w, https://www.lemonary.cn/wp-content/uploads/2025/01/image-300x62.png 300w, https://www.lemonary.cn/wp-content/uploads/2025/01/image-768x159.png 768w, https://www.lemonary.cn/wp-content/uploads/2025/01/image-1536x317.png 1536w, https://www.lemonary.cn/wp-content/uploads/2025/01/image-2048x423.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph">另外，提到这个参数。也可以将CASE WHEN查询表达式转换为IFOPERATOR函数，也就是调成1。</p>



<pre class="wp-block-code"><code>SP_SET_PARA_VALUE(1, 'CASE_WHEN_CVT_IFUN', 1);</code></pre>
]]></content:encoded>
					
					<wfw:commentRss>https://www.lemonary.cn/%e8%be%be%e6%a2%a6%e6%95%b0%e6%8d%ae%e5%ba%93%e4%b8%ad%e7%9a%84case-when%e8%af%ad%e5%8f%a5/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
