Sql 如何在case语句中检测字段的值是否为字符串;0“;在甲骨文?

Sql 如何在case语句中检测字段的值是否为字符串;0“;在甲骨文?,sql,oracle,Sql,Oracle,在oracle中,如何在case语句中检测字段的值是否为“0”,然后将其设置为“”? 因为当我使用这样的东西时,我很难检测到它 case when REGEXP_LIKE (ctyid, '^[:DIGIT]') then '""' 它不起作用,我仍然在输出中得到“0”。我想将其设置为“”如果要在字符串中的任何位置查找0,请使用类似于运算符的: 当ctyid喜欢“%0%”时,则为NULL 如果在字符串中的任何位置找到0,则将返回NULL值 如果要查找值本身为0,请使用=运算符 当ctyi

在oracle中,如何在case语句中检测字段的值是否为“0”,然后将其设置为“”? 因为当我使用这样的东西时,我很难检测到它

case 
  when REGEXP_LIKE (ctyid, '^[:DIGIT]') then '""'

它不起作用,我仍然在输出中得到“0”。我想将其设置为“”

如果要在字符串中的任何位置查找0,请使用类似于运算符的

当ctyid喜欢“%0%”时,则为NULL

如果在字符串中的任何位置找到0,则将返回NULL值

如果要查找值本身为0,请使用
=
运算符

当ctyid='0'时,则为NULL

大小写
看起来更容易阅读,但同样的表达式可以写成
解码


解码(cytid,'0',NULL,cytid)
请参考

正确的表述应该是:

case 
  when REGEXP_LIKE (ctyid, '^[[:digit:]]') then '""' else ctyid end

但是您的示例代码将匹配所有
ctyid
以数字开头,而不仅仅是其中的
0

更新

根据@LalitKumarB的评论,我必须附加以下代码,我认为应该由OPself完成

case 
  when REGEXP_LIKE (ctyid, '^0') then '""' else ctyid end

你能举个例子吗?一个简单的
ctyid='0'
不起作用?是的,它不起作用。仍然解决了“0”问题,我的错误是,我首先做了一个测试,当ctyid不为null时,我应该先检查它是否等于'0',然后再检查它是否为null以获得'''''值。无论如何,这是如何回答OP的问题的?您的查询将找到任何数字,而不仅仅是
0
@LalitKumarB我跳过了所有的口头错误,并依赖于代码。答案部分仅用于回答。其他建议等仅应在评论中提供。
case 
  when REGEXP_LIKE (ctyid, '^0') then '""' else ctyid end