需要查看税号字段是否包含字母或任何特殊字符:*,!,?,@,#,$,&,+,(),/
我该如何编写此SQL语句?
Oracle有regexp_like函数:
select * from tablename where regexp_like(columnname, '[*!?@#$&+()/]');
regexp_like
。然而,在这个问题中,你根本不需要使用正则表达式。尽可能选择使用标准字符串函数(即非正则表达式函数)的解决方案,因为正则表达式要慢得多——这是我们为了它们更大的灵活性所付出的代价。 - user5683823这里是显示所有不完全由数字组成的taxid的最佳方法:
select taxid
from your_table
where translate(taxid, '.0123456789', '.') is not null
TRANSLATE
将输入中的每个句点替换为输出中的句点,从而“翻译”(替换)它们。由于第二个参数中的其他字符在第三个参数中没有对应的字符,因此它们将被简单地删除。如果此操作的结果不是null
,则taxid
包含至少一个不是数字的字符。如果taxid
全是数字,则操作的结果为null
。请注意,这里使用的句点字符是必需的,因为 Oracle 对TRANSLATE
的定义存在一些奇怪之处:如果其任何参数为null
,则其返回值也为null
。虽然这听起来不太合理,但我们必须按照 Oracle 定义的函数进行操作。