达梦数据库中的CASE WHEN语句
本文于 3 天前发布,最后更新于 3 天前

很多客户在执行CASE WHEN语句时报错,总怀疑是DM数据库的BUG,但其实不然。本文就来讲解一下。

执行如下SQL

SELECT
        CASE WHEN INSTR('1100', ',') > 0 THEN LEFT('1100', INSTR('1100', ',')-1) ELSE '1100' END AS STR
FROM
        DUAL;

报错:[-6803]:非法的参数数据。原因是LEFT(‘1100’, INSTR(‘1100’, ‘,’)-1)这部分计算完是LEFT(‘1100’, -1),-1是不符合参数规则的,所以导致整个SQL报错。

可以通过添加HINT来解决

SELECT /*+CASE_WHEN_CVT_IFUN(8)*/
        CASE WHEN INSTR('1100', ',') > 0 THEN LEFT('1100', INSTR('1100', ',')-1) ELSE '1100' END AS STR
FROM
        DUAL;

另外,提到这个参数。也可以将CASE WHEN查询表达式转换为IFOPERATOR函数,也就是调成1。

SP_SET_PARA_VALUE(1, 'CASE_WHEN_CVT_IFUN', 1);
暂无评论

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇