返回非中文字符

群友问如何返回数据中的非中文字符。

模拟数据源如下

CREATE OR REPLACE VIEW v AS
SELECT '你好,很好bbb' AS c1 FROM dual UNION ALL
SELECT '你好#' AS c1 FROM dual UNION ALL
SELECT '你好a' AS c1 FROM dual UNION ALL
SELECT '你好z' AS c1 FROM dual UNION ALL
SELECT '你好A' AS c1 FROM dual UNION ALL
SELECT '中華人民共和國
a' AS c1 FROM dual;

这个以前没做过。尝试写法如下

SELECT regexp_substr(c1,'[a-zA-Z[:punct:][:space:]]+') FROM v

不过,自已也知道这种枚举方法不好。有可能会遗漏。

还是查下资料吧。

翻了几篇文章,大多是错的。

终于找到一种写法

SQL> SELECT regexp_substr(c1, '([^[:alpha:]]|[a-z,A-Z])+') FROM v;
REGEXP_SUBSTR(C1,'([^[:ALPHA:]
--------------------------------------------------------------------------------
,
#
a
z
A
a
6 rows selected

记之。

你可能感兴趣的:(返回非中文字符)