小编典典

比较Oracle中的字符串

sql

我需要查询表中给定字符串的值。该表区分大小写,但我想在比较中执行ToLower()。

假设我有一个包含以下数据的类表。

class    teacher
-----------------
Mat101   Smith
MAT101   Jones
mat101   Abram
ENG102   Smith

我的查询应该是这样的

Select teacher From classes where lower(class) = 'math101'

这是进行比较的最佳方法吗?

更新

我无法控制数据库或数据。我是只读用户。


阅读 153

收藏
2021-04-28

共1个答案

小编典典

不;
最好改善数据:创建一个数字ID,以表示这些看似毫无意义的类变体(可能还有一个相关的查找表来获取ID)。使用where子句中的ID列,您应该找到一个索引数字列。

如果这是不可行的,请考虑在Lower(class)上基于函数的索引。

如果这不是一个选择,并且“最佳”问题严格地与性能相关,请考虑将其归一化并添加包含Lower(class)的列,该列可能填充有触发器。

如果不是这种选择,请更新数据,使其全部为小写(并采取措施仅插入/更新小写类数据)。

如果您不能像这样更新数据,那么答案是“也许”。

无论如何,如果您还没有测试列的索引,就不能称其为最佳。

2021-04-28