Sql Oracle查询-字段包含特殊字符或字母

Sql Oracle查询-字段包含特殊字符或字母,sql,oracle,select,Sql,Oracle,Select,需要查看taxid字段是否包含字母或任何特殊字符:*、!、?、@、#、$、&、+,(,),/ 如何编写此SQL?Oracle的regexp\u类似于: select * from tablename where regexp_like(columnname, '[*!?@#$&+()/]'); 以下是显示并非完全由数字组成的所有出租车的最佳方式: select taxid from your_table where translate(taxid, '.0123456789',

需要查看taxid字段是否包含字母或任何特殊字符:*、!、?、@、#、$、&、+,(,),/


如何编写此SQL?

Oracle的regexp\u类似于:

select * from tablename where regexp_like(columnname, '[*!?@#$&+()/]');

以下是显示并非完全由数字组成的所有出租车的最佳方式:

select taxid
from   your_table
where  translate(taxid, '.0123456789', '.') is not null

TRANSLATE
将用输出中的句点“翻译”(替换)输入中的每个句点。由于第二个参数中的其他字符在第三个参数中没有对应的字符,因此它们将被删除。如果此操作的结果为非
null
,则taxid至少包含一个非数字字符。如果
taxid
为所有数字,则操作结果为
null
。请注意,此处使用的句点字符是必需的,因为Oracle对
TRANSLATE
的定义很奇怪:如果其任何参数为
null
,则其返回值也是如此。这没有多大意义,但我们必须使用Oracle定义的函数。

Define“or”。您的意思是,显示所有包含至少一个字母或至少一个特殊字符的taxid字段吗?这很奇怪;相反,我怀疑你可以更仔细地阐述你的问题。嗨,我正在尝试验证taxid字段只包含数字而不包含其他内容。从各种来源提取数据,其中没有针对taxid输入的内容进行验证检查,因此我检查数据质量。上面有所有特殊字符,我是否只需将字母表添加到其中以覆盖所有字母?谢谢@CherylLHubert-检查字母、数字、标点符号等是否存在的方法比枚举它们要简洁得多,即使使用类似于的regexp\u。但是,在这个问题中,您根本不需要使用正则表达式。只要有可能,您应该选择使用标准字符串函数(即非正则表达式函数)的解决方案,因为正则表达式要慢得多——这是我们为其更大的灵活性付出的代价。