【发布时间】:2019-01-22 00:26:13
【问题描述】:
有什么方法可以在不使用 where 子句中的函数的情况下不区分大小写?
请指定您在回复时/如果您正在谈论的数据库。我知道 MySQL 默认情况下已经不区分大小写。 Oracle、MSSQL 或 HANA 呢?
select * from mytable WHERE upper(fieldname) = 'VALUE'
【问题讨论】:
-
如果您的目标数据库(您从未告诉我们您实际使用的是哪个数据库)不支持这种行为,您可以随时维护一个单独的列,其中包含不区分大小写的原始列版本。
-
嗯,对于每个 rdbms,它是不同的 - 在 Wanderer 的答案中使用
collate行是针对 SQL Server,使用SET NLS_COMP是针对 Oracle,而对于 Sap Hana,这可能是完全不同的事情。 -
upper(columnname) = 'VALUE'几乎可以与任何 dbms 一起使用。但是,不要期望总是使用索引,所以性能可能真的很差。 -
我认为关于 4 个数据库的问题太宽泛了。
-
同意@GordonLinoff 的观点,这个问题似乎过于宽泛,无法得出一个最佳答案。此外,问题背后的重要动机似乎是解决方案仍应允许 RDBMS 使用索引。那应该是问题的一部分。
标签: sql sql-server oracle hana case-sensitive