在使用JPA的J2EE项目中,如何强制类似查询不区分大小写并且不区分重音?
我知道更改会话变量NLS_COMP和NLS_SORT,但我想知道在查询本身是否还有另一个技巧可以做到这一点,而不更改会话变量
(...)使用JPA,如何强制类似查询不区分大小写并且不区分重音?
我的答案是面向JPQL.对于前一部分,您可以这样做:
where lower(name) like 'johny%';
Run Code Online (Sandbox Code Playgroud)
对于后面的部分,我不知道采用标准的JPQL方法.
最后,改变会话变量NLS_COMP,NLS_SORTIMO是最佳选择.
粗略地说,你可以做类似的事情
\n\nselect upper(convert('This is a t\xc3\xaast','US7ASCII')),\n upper(convert('THIS is A test','US7ASCII'))\nfrom dual;\n\nselect 1 from dual \nwhere upper(convert('This is a t\xc3\xaast','US7ASCII')) =\n upper(convert('THIS is A test','US7ASCII'))\nRun Code Online (Sandbox Code Playgroud)\n\nCONVERT 将重音字符减少为映射的 ASCII 等效字符,而 UPPER 则将小写强制转换为大写。生成的字符串应该是可匹配的。
\n