Oracle、达梦:数据库大小写不敏感,但是又要区分大小写敏感(默认敏感)

一、

  • 艹,这个需求就很操蛋。

  • 实现

SELECT *
FROM T1
WHERE REGEXP_LIKE(field, '.*value.*', 'c');

在 Oracle 数据库中使用 REGEXP_LIKE 函数时,'c' 参数用于指定比较应该是大小写敏感的。默认情况下,正则表达式的匹配在 Oracle 中是大小写敏感的,但这个参数可以用来明确这一行为,尤其是在数据库的全局设置可能影响大小写敏感性的环境中。
REGEXP_LIKE 函数的一般语法是:
其中 match_parameter 可以包括以下几种:
'c':表示大小写敏感(Case sensitive)。
'i':表示大小写不敏感(Case insensitive)。
'n':允许模式匹配符号 "." 匹配换行符。
'm':将源字符串视为多行,其中 ^ 和 $ 分别匹配每行的开始和结束,而不是整个字符串的开始和结束。
如果没有特别指定,REGEXP_LIKE 默认是大小写敏感的,即默认包含 'c' 的行为。如果你的环境中正则表达式似乎不遵循这一默认行为,可能是由于数据库的 NLS_SORT 或 NLS_COMP 参数设置导致的。在这种情况下,明确使用 'c' 参数可以帮助确保查询的行为符合预期。

二、不区分大小写查询

SELECT *
FROM T1
WHERE LOWER(field) LIKE LOWER('%value%') ;

posted on 2024-04-25 16:36  C_C_菜园  阅读(66)  评论(0编辑  收藏  举报

导航