微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Oracle中不区分大小写的搜索

如何解决Oracle中不区分大小写的搜索

从10gR2开始,Oracle允许通过设置NLS_COMPNLS_SORT会话参数来微调字符串比较的行为:

sql> SET heading OFF
sql> SELECT *
  2  FROM NLS_SESSION_ParaMETERS
  3  WHERE ParaMETER IN ('NLS_COMP', 'NLS_SORT');

NLS_SORT
BINARY

NLS_COMP
BINARY


sql>
sql> SELECT CASE WHEN 'abc'='ABC' THEN 1 ELSE 0 END AS GOT_MATCH
  2  FROM DUAL;

         0

sql>
sql> ALTER SESSION SET NLS_COMP=LINGUISTIC;

Session altered.

sql> ALTER SESSION SET NLS_SORT=BINARY_CI;

Session altered.

sql>
sql> SELECT *
  2  FROM NLS_SESSION_ParaMETERS
  3  WHERE ParaMETER IN ('NLS_COMP', 'NLS_SORT');

NLS_SORT
BINARY_CI

NLS_COMP
LINGUISTIC


sql>
sql> SELECT CASE WHEN 'abc'='ABC' THEN 1 ELSE 0 END AS GOT_MATCH
  2  FROM DUAL;

         1

您还可以创建不区分大小写的索引:

create index
   nlsci1_gen_person
on
   MY_PERSON
   (NLSSORT
      (PERSON_LAST_NAME, 'NLS_SORT=BINARY_CI')
   )
;

该信息来自Oracle不区分大小写的搜索文章提到了,REGEXP_LIKE但似乎也适用于旧版本=

在10gR2之前的版本中,这实际上是做不到的,如果不需要 区分重音符号的 搜索,通常的方法是只UPPER()对列和搜索表达式都使用。

解决方法

LIKE和其他比较运算符=等的默认行为区分大小写。

是否可以使它们不区分大小写?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。