我有一个SQL查询,如下所示:
select telephone from tableA where telephone !="";
现在,当上述工作正常时,它会正常运行。但是,在我所在地区,电话需要长达10位,有时数据缺少前导'0',我已将sqlQuery更改为如下:
select substr('0000000000'||telephone,-10,10) from tableA where telephone != "";
上述查询不适用于“where”子句,因为所有空字段现在都包含'0000000000'。
有没有办法首先检查电话是否为空,然后执行上述子功能?
上面的例子只是一个简单的例子,所以我可以改变电话的位置!='0000000000'但我还有其他更复杂的查询,我想使用它而且我不想改变where子句。
答案 0 :(得分:1)
以上查询不适用于"其中"所有空字段现在都包含' 0000000000'。
不,不是这样。您的查询中包含where telephone != ""
的事实意味着结果中实际上不包含空字段的行。
select
只会提取符合where
子句中指定条件的行,然后它会将所有转换应用于已提取的行。
有没有办法首先检查电话是否为空,然后执行上述子功能?
是的,有。你正在做这件事。问题解决了: - )