Oracle中的重音和不区分大小写的COLLATE等效项

时间:2009-02-03 15:17:42

标签: oracle

在Microsoft SQL Server中,如果我想在区分大小写的数据库中不敏感地搜索大小写,我可以运行以下SQL:

SELECT * FROM MyTable
WHERE MyField = 'BobDillon' COLLATE Latin1_General_CI_AI

这将找到所有“bobdillon”条目。

如果我想在Oracle中做同样的事情,我知道我可以这样做:

SELECT * FROM MyTable
WHERE UPPER(MyField) = 'BOBDILLON'

但我想知道是否有与collat​​e关键字直接相同的内容,因此我可以根据需要搜索区分大小写和重音敏感度。

2 个答案:

答案 0 :(得分:8)

SELECT *
FROM MyTable
WHERE NLSSORT(MyField, 'NLS_SORT = Latin_CI') = NLSSORT('BobDillon', 'NLS_SORT = Latin_CI')

答案 1 :(得分:0)

this thread中,您可以执行以下操作:

select * from your_table 
where utl_raw.cast_to_varchar2((nlssort(your_column, 'nls_sort=binary_ai'))) like lower('%word%')