在oracle中,如何在case语句中检测字段的值是否在" 0"中,然后将其设置为""? 因为我在使用这样的东西时检测到它有问题
case
when REGEXP_LIKE (ctyid, '^[:DIGIT]') then '""'
它不起作用,我仍然得到" 0"在输出中...我想将其设置为""
答案 0 :(得分:1)
如果要在字符串中的任何位置查找0,请使用LIKE
运算符:
WHEN ctyid LIKE '%0%' THEN NULL
如果在字符串中的任何地方找到0,那将返回NULL值。
如果要将值本身设为0,请使用=
运算符。
WHEN ctyid = '0' THEN NULL
CASE
看起来更容易阅读,但同一个表达式可写为DECODE
:
DECODE(cytid, '0', NULL, cytid)
答案 1 :(得分:1)
请参阅Regular Expression Syntax in ORACLE
的文档正确的表达应该是:
case
when REGEXP_LIKE (ctyid, '^[[:digit:]]') then '""' else ctyid end
OR
case
when REGEXP_LIKE (ctyid, '^\d') then '""' else ctyid end
但是您的示例代码会将所有ctyid
首字母与一个数字匹配,而不仅仅是0
。
<强>更新强>
根据@ LalitKumarB的评论,我必须附加以下代码,我认为它应该由OPself完成。
case
when REGEXP_LIKE (ctyid, '^0') then '""' else ctyid end