比较字符串忽略SQL中的重音(ORACLE)

Tia*_*asn 7 sql oracle

我想知道是否有一种简单的方法来比较忽略重音和大写的两个文本值.我正在使用Oracle数据库.我已经搜索了一个答案,但说实话,我不明白他们在这里提出的建议.在Oracle中使用LIKE进行Accent和不区分大小写的排序规则.我试过了,这对我没用.基本上我想做的就是两个比较文本值,如'pepé'和'pepe',并获得true作为答案.

没有LIKE指令可以做到吗?

谢谢!

MT0*_*MT0 7

Oracle安装程序:

CREATE TABLE TABLE_NAME ( value ) AS
SELECT 'pepé' FROM DUAL;

-- Not necessary to create an index but it can speed things up.
CREATE INDEX value_without_accent_idx
  ON TABLE_NAME ( CONVERT( value, 'US7ASCII' ) );
Run Code Online (Sandbox Code Playgroud)

查询:

SELECT *
FROM   table_name
WHERE  CONVERT( value, 'US7ASCII' ) = 'pepe';
Run Code Online (Sandbox Code Playgroud)

输出:

VALUE
-----
pepé  
Run Code Online (Sandbox Code Playgroud)


col*_*sar 5

nlssort按以下方式使用该函数:

select * from <your_table> where utl_raw.cast_to_varchar2((nlssort(<inspected_column>, 'nls_sort=binary_ai'))) like 'pe%';
Run Code Online (Sandbox Code Playgroud)

nlssort 调用将重音字符转换为其语言基础,并在比较中忽略大小写。

原始来源是这篇文章(在12c上验证)。