sql - Oracle 正则表达式列出两个字符串之间的唯一字符差异

标签 sql regex oracle oracle10g

在 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/

相关文章:

python - 用于获取字符后字符串中所有数字的正则表达式

c - 如何更多地调查一些给出系统错误 :exec format error in AIX 的 .so 文件

sql - Oracle 从 IN 子句中选择数字

javascript 拆分和匹配不起作用(解析可扩展搜索)

sql - SQL WHERE 子句的正则表达式

regex - 使用正则表达式告诉 csplit 在何处拆分文件

ORACLE 在更新时触发 INSERT

SQLServer 获取值为空的结果

sql - 从Sql Server删除所有 View

sql - 从父表和子表中删除行