Sql Oracle查询-字段包含特殊字符或字母
需要查看taxid字段是否包含字母或任何特殊字符:*、!、?、@、#、$、&、+,(,),/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',
如何编写此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。但是,在这个问题中,您根本不需要使用正则表达式。只要有可能,您应该选择使用标准字符串函数(即非正则表达式函数)的解决方案,因为正则表达式要慢得多——这是我们为其更大的灵活性付出的代价。