我需要在oraclesql中找到col具有特殊字符或数字(连字符、撇号和空格除外)的行。我的做法如下:
SELECT * FROM test WHERE Name_test LIKE '%[^A-Za-z _]%'
但它不起作用,我还需要排除任何撇号。请帮忙。
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
4nkexdtk2#
我需要在oraclesql中找到col具有特殊字符或数字的行(除了连字符、撇号和空格[可能还有单引号])。您可以使用双单引号将单引号放入:
WHERE Name_test LIKE '%[^-A-Za-z _'']%'
但是,这不是oracle语法。如果上述方法有效,那么我猜您使用的是sql server。在oracle中:
WHERE REGEXP_LIKE(Name_test, '[^A-Za-z _'']')
2条答案
按热度按时间2nc8po8w1#
如果需要查找列中只有数字和特殊字符的所有行(并且可以指定所有必需的特殊字符):
如您所见,只需在0-9之后添加特殊字符即可开始$-结束
关于格式q“[something]”,请参见此处的文本文字:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/literals.html#guid-1824cbaa-6e16-4921-b2a6-112fb02248da
如果需要查找列中没有字母字符的所有行:
或者选择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
4nkexdtk2#
我需要在oraclesql中找到col具有特殊字符或数字的行(除了连字符、撇号和空格[可能还有单引号])。
您可以使用双单引号将单引号放入:
但是,这不是oracle语法。如果上述方法有效,那么我猜您使用的是sql server。在oracle中: