如何在Oracle 10gR2和JPA中对区分大小写和重音不敏感?

Alf*_*TeK 10 java oracle jpa

在使用JPA的J2EE项目中,如何强制类似查询不区分大小写并且不区分重音?

我知道更改会话变量NLS_COMP和NLS_SORT,但我想知道在查询本身是否还有另一个技巧可以做到这一点,而不更改会话变量

Pas*_*ent 8

(...)使用JPA,如何强制类似查询不区分大小写并且不区分重音?

我的答案是面向JPQL.对于前一部分,您可以这样做:

where lower(name) like 'johny%';
Run Code Online (Sandbox Code Playgroud)

对于后面的部分,我不知道采用标准的JPQL方法.

最后,改变会话变量NLS_COMP,NLS_SORTIMO是最佳选择.


Gar*_*ers 4

粗略地说,你可以做类似的事情

\n\n
select  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'))\n
Run Code Online (Sandbox Code Playgroud)\n\n

CONVERT 将重音字符减少为映射的 ASCII 等效字符,而 UPPER 则将小写强制转换为大写。生成的字符串应该是可匹配的。

\n