[SQL]如何不用Alter session,做到AI(accent insensitive)

claire_wu 2011-05-18 05:54:42
1) 我创建了一个表,并插入了三条记录:
create table accent_test(col varchar2(10 char);
insert into accent_test values('INDIA');
insert into accent_test values('india');
insert into accent_test values('InDiÄ ');

2) 下面SQL的结果做到了CI(Case insensitive),没做到AI, 返回结果没有包含第三条记录:
select *
from accent_test
where NLS_UPPER(col, 'NLS_SORT=GENERIC_BASELETTER') LIKE NLS_UPPER('INDIA', 'NLS_SORT=GENERIC_BASELETTER'


3) 我知道下面语句可以让上面SQL语句返回所有记录,可是它会导致当前session下所有表的所有字段都受到影响:
SQL> ALTER SESSION SET NLS_COMP=LINGUISTIC;
SQL> ALTER SESSION SET NLS_SORT=GENERIC_BASELETTER;

问题:
请问有什么办法能够不改变session,只针对表的某个字段做到AI(accent insensitive)?

先谢谢了哈!
...全文
112 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
claire_wu 2011-05-20
  • 打赏
  • 举报
回复
有人知道吗:(
claire_wu 2011-05-19
  • 打赏
  • 举报
回复
To BOBO12082119:
谢谢你提供的文章,可惜这篇文章讲的是SORT, 不是QUERY

To tangren:
谢谢你的回复,那有什么办法通过where语句里面做到AI呢?
claire_wu 2011-05-19
  • 打赏
  • 举报
回复
又加了20分,请各位帮帮忙哦。。
tangren 2011-05-18
  • 打赏
  • 举报
回复
nls_comp规则不能在函数中设置,只能在全局和会话级别设置。

17,086

社区成员

发帖
与我相关
我的任务
社区描述
Oracle开发相关技术讨论
社区管理员
  • 开发
  • Lucifer三思而后行
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧