在 Oracle 10g 中,我想创建一个正则表达式来列出符合条件的字符 两个字符串之间不同。
原因如下: 我有一个表,其中的一个字段有时包含非法语的 Unicode 字符。
我能够列出包含这些非标准字符的行来创建 future 使用此查询进行清理:
SELECT DataID, Name, CONVERT(NAME, 'WE8ISO8859P1', 'WE8DEC')
FROM table
WHERE NAME <> CONVERT(NAME, 'WE8ISO8859P1', 'WE8DEC' )
哪里 WE8ISO8859P1 - 西欧(我接受)
和 WE8DEC - 来自 Digital Equipment Corporation 的 8 位字符集(我知道该应用程序支持)
我想如果使用 Oracle 正则表达式,我将能够提取所有这些非标准字符的列表。但我不熟悉 Oracle 中的正则表达式,因此将不胜感激。
这是我的(不可行的)想法:
select regexp_replace("éaé", '[a-z][A-Z]', '' ) from dual;
会将“é”作为要清理的字符。
最佳答案
也许这样的事情会让你朝着正确的方向前进:
SQL> select regexp_replace('éaéABcdEF', '([a-zA-Z])', '' ) problems from dual;
PROBLEMS
--------
éé
它会为您提供每次出现的您想要识别的字符,但这也许不是问题,或者您可以对其进行优化...
关于sql - Oracle 正则表达式列出两个字符串之间的唯一字符差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1413198/