Oracle 区分大小写的比较运算符

Posted

技术标签:

【中文标题】Oracle 区分大小写的比较运算符【英文标题】:Oracle case-sensitive comparison operators 【发布时间】:2017-03-17 20:06:16 【问题描述】:

似乎 Oracle 比较运算符 = 和 like 区分大小写 在不更改 NLS_COMP 的情况下: 是否可以为每个查询添加提示以使其不区分大小写?

something like:    select /*IGNORE_CASE*/ from tab where val like '%noMatTer%'

是否可以在 Oracle DB 中引入/“教授”/编码新提示? 查询级别的任何事情都可以完成吗? (除了显而易见的:WHERE upper(user_name) LIKE '%ME%')

【问题讨论】:

Case insensitive searching in Oracle的可能重复 【参考方案1】:

没有提示。但是,从 12c 中的新功能指南...

不区分大小写的数据库 Oracle 数据库支持不区分大小写的排序规则,例如 BINARY_CI 或 GENERIC_M_CI。通过将此类排序规则应用于 SQL 操作,应用程序可以以不区分大小写的方式执行字符串比较和匹配,而与数据的语言无关。借助新的 Oracle Database 12c 第 2 版 (12.2) 为列声明排序规则的功能,您可以声明一个列始终以不区分大小写的方式进行比较。列排序规则(如果未明确指定)继承自表默认排序规则,而表默认排序规则又继承自模式默认排序规则。这样,您可以轻松地将数据库中应用程序的所有字符列声明为不区分大小写。

使用此功能,开发人员可以将数据声明为不区分大小写,而不必在 SQL 语句中添加显式的大写操作。此功能简化了应用程序从允许此类声明的非 Oracle 数据库系统迁移到 Oracle 数据库。

【讨论】:

【参考方案2】:

您是否考虑过使用 lower() 函数进行查询级补救?

select * from tab where lower(val) like lower('%noMatTer%')

【讨论】:

以上是关于Oracle 区分大小写的比较运算符的主要内容,如果未能解决你的问题,请参考以下文章

是否有 C# 不区分大小写的等于运算符?

oracle字段能大小写混写吗

字符串的字典比较[不区分大小写]

在运行时与 VB.NET LIKE 运算符进行大小写(不)敏感比较(无选项比较)

oracle数据库区分大小写吗?

oracle11g中的sql语句区分大小写吗