忽略查询中的重音

时间:2014-07-28 12:40:44

标签: sql oracle10g

我有一个查询,它会比较WHERE子句中的值。

事情是,我得到了某些时候的口音。

所以,这些词语应该是不一样的,而它应该是。

例如,我登上了我的桌子t_etab

1 | Collège
2 | Université

我想在t_etab中找到一行:

SELECT id_etab
from t_etab
where instr(UPPER('COLLEGE RANDOM                                   '),UPPER(lib_etab)) > 0;

但是这不会得到id 1,因为lib_etab将是COLLÈGE而不是COLLEGE

有没有办法忽略重音,所以我的查询返回1?

编辑:正如相关问题所述,我们必须自己替换/翻译所有字符。

谢谢。

1 个答案:

答案 0 :(得分:-1)

与编辑这个答案相反,这里有一个更好的(以oracle为导向)答案:
https://stackoverflow.com/a/1572781/3824902

您需要强制查询重音不敏感的排序规则。您还需要确保双方具有相同的排序规则,否则在运行其他比较时可能会返回更多错误。

SELECT id_etab
from t_etab
where instr collate Latin1_General_CI_AI Like   
                                '%COLLEGE%' collate Latin1_general_CI_AI

http://msdn.microsoft.com/en-us/library/ms144250.aspx