您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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()对列和搜索表达式都使用。

Oracle 2022/1/1 18:46:56 有331人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶