我必须从一个表中提取行,其中列值包含除字母,数字,连字符,下划线,空格和逗号之外的任何其他内容。如果它只有上面提到的字符,它不应该拉行。谢谢你的帮助。
我正在尝试regexp_like,但是没有得到理想的结果。
REGEXP_LIKE(col, '[^[:alnum:]]|(^-)|(^,)|[^[:space:]]|(^_)')
例如:
TD-6 TTY-60X3APTNO DAY => should not retrieve
TY-2YYTY 20TRH TY L/W => Should retrieve
TIRREG CL3- HARDWARE & => Should retrieve
答案 0 :(得分:5)
REGEXP_LIKE(col, '[^[:alnum:] _,-]')
括号的工作方式是括号内的任何内容都匹配,或者如果您使用插入符号(^)引导括号中的项目,则除括号中的内容之外的任何内容都匹配。
答案 1 :(得分:3)
您想要的所有不是字母数字,下划线,逗号或连字符?那是对的吗?那你想要这样的东西:
REGEXP_LIKE(col, '[^A-Za-z0-9_ ,-]')
测试:
WITH d1 AS (
SELECT 'TD-6 TTY-60X3APTNO DAY' AS col FROM dual
UNION ALL
SELECT 'TY-2YYTY 20TRH TY L/W' FROM dual
UNION ALL
SELECT 'TIRREG CL3- HARDWARE &' FROM dual
)
SELECT col FROM d1
WHERE REGEXP_LIKE(col, '[^A-Za-z0-9_ ,-]')
返回:
TY-2YYTY 20TRH TY L/W
TIRREG CL3- HARDWARE &