我需要查询表中给定字符串的值。该表区分大小写,但我想在比较中执行ToLower()。
假设我有一个包含以下数据的类表。
class teacher ----------------- Mat101 Smith MAT101 Jones mat101 Abram ENG102 Smith
我的查询应该是这样的
Select teacher From classes where lower(class) = 'math101'
这是进行比较的最佳方法吗?
我无法控制数据库或数据。我是只读用户。
不; 最好改善数据:创建一个数字ID,以表示这些看似毫无意义的类变体(可能还有一个相关的查找表来获取ID)。使用where子句中的ID列,您应该找到一个索引数字列。
如果这是不可行的,请考虑在Lower(class)上基于函数的索引。
如果这不是一个选择,并且“最佳”问题严格地与性能相关,请考虑将其归一化并添加包含Lower(class)的列,该列可能填充有触发器。
如果不是这种选择,请更新数据,使其全部为小写(并采取措施仅插入/更新小写类数据)。
如果您不能像这样更新数据,那么答案是“也许”。
无论如何,如果您还没有测试列的索引,就不能称其为最佳。