sql - Oracle 中所有重音字符的正则表达式

标签 sql regex oracle character-encoding

我正在尝试查找带有重音字符的数据。我试过这个:

select *
from xml_tmp
where regexp_like (XMLTYpe.getClobVal(xml_tmp.xml_data), unistr('\0090'))

而且它有效。它查找 XML 数据字段包含 É 的所有记录。问题是它只匹配带有重音符号的大写E。我尝试编写一个更通用的查询,以使用等价类查找带有重音元音(a、e、i、o、u、大写和小写,带有任何重音)的所有数据。我想要一个正则表达式匹配重音元音,但我不确定如何获得它,因为 [[=e=]] 等等价类匹配>所有 e(带或不带重音符号)。

此外,这实际上不起作用:

select *
from xml_tmp
where regexp_like (XMLTYpe.getClobVal(xml_data),'É');

(使用 Oracle 10g)

最佳答案

怎么样

SELECT *
  FROM xml_tmp
 WHERE REGEXP_LIKE
        ( REGEXP_REPLACE
          ( XMLTYpe.getClobVal(xml_tmp.xml_data),
            '[aeiouAEIOU]',
            '-'
          )
          '[[=a=][=e=][=i=][=o=][=u=]]'
        )
;

?这将在执行 REGEXP_LIKE 之前消除任何非重音元音。

(我知道这很丑。但它应该有用。)

关于sql - Oracle 中所有重音字符的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9020610/

相关文章:

sql - 比较 T-SQL Between 和 '<' '>' 运算符的性能差异?

mysql - 尝试获取慈善组织的捐款和费用月度报告

c++ - 使用正则表达式检测表达式中的术语

mysql - SQL查询按时间戳的月份部分分组

mysql - 从mysql中的大表中快速选择随机行

javascript - 正则表达式匹配尽可能小的组

swift - 在 swift 中使用 RegExp 降低浮点精度

mysql - 向表中添加或删除列会强制重新创建所有索引吗?

java - Android Oracle 数据库 JDBC6

asp.net - 如何在 x64 中使用 WebDev.WebServer.exe (VS Web Server)?