我正在尝试查找带有重音字符的数据。我试过这个:
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/