如何在oraclesql中查找列具有特殊字符或数字(连字符、撇号和空格除外)的行

os8fio9y  于 2021-07-24  发布在  Java
关注(0)|答案(2)|浏览(446)

我需要在oraclesql中找到col具有特殊字符或数字(连字符、撇号和空格除外)的行。
我的做法如下:

SELECT *
FROM   test
WHERE  Name_test LIKE '%[^A-Za-z _]%'

但它不起作用,我还需要排除任何撇号。请帮忙。

2nc8po8w

2nc8po8w1#

如果需要查找列中只有数字和特殊字符的所有行(并且可以指定所有必需的特殊字符):

SELECT *
FROM   test
WHERE  regexp_like(Name_test, q['^[0-9'%#@]+$]')

如您所见,只需在0-9之后添加特殊字符即可开始$-结束
关于格式q“[something]”,请参见此处的文本文字:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/literals.html#guid-1824cbaa-6e16-4921-b2a6-112fb02248da
如果需要查找列中没有字母字符的所有行:

SELECT *
FROM   test
WHERE  regexp_like(Name_test, '^[^a-zA-Z]*$');

或者选择from test where regexp_like(name_test,“^\w$”);
关于\w-请参阅此处的“表8-5 oracle sql正则表达式中受perl影响的运算符”:
https://docs.oracle.com/database/121/adfns/adfns_regexp.htm#adfns235

4nkexdtk

4nkexdtk2#

我需要在oraclesql中找到col具有特殊字符或数字的行(除了连字符、撇号和空格[可能还有单引号])。
您可以使用双单引号将单引号放入:

WHERE  Name_test LIKE '%[^-A-Za-z _'']%'

但是,这不是oracle语法。如果上述方法有效,那么我猜您使用的是sql server。在oracle中:

WHERE REGEXP_LIKE(Name_test, '[^A-Za-z _'']')

相关问题