【发布时间】:2010-07-06 16:13:16
【问题描述】:
似乎尽管 SQL Server 在 WHERE 子句中的大小写不匹配,但它仍然在 WHERE 子句中尊重 UPPER/LOWER,这似乎相当昂贵。是否可以指示 SQL Server 在 WHERE 子句中忽略 UPPER/LOWER?
这似乎是一个毫无意义的问题,但能够为 Oracle 和 SQL Server 编写单个查询非常好。
谢谢,杰米
【问题讨论】:
-
SQL Server 可以设置为使用区分大小写的排序规则,但默认情况下它不会。但我很惊讶 UPPER / LOWER 很昂贵,而且这里错过了优化。
-
将 SQL Server 数据库排序规则设置为不区分大小写。你是什么意思它的荣誉?
-
“履行义务”中的“荣誉”。他说它在 SQL 中计算
UPPER('MyString') = 'MYSTRING',即使它随后对结果执行不区分大小写的比较 - 即WHERE UPPER(column) = @param和WHERE column = @param在他的数据库中是等效的,但第一个运行速度较慢。 -
@Rup - RE:昂贵 如果您在 WHERE 子句中的列上使用函数,您将获得扫描。例如
WHERE LOWER(col1) = 'abc' -
@Martin Smith - 是的,好点。我本来打算以相反的方式写我的例子
WHERE col1 = LOWER('abc'),d'oh。也许这就是杰米的问题?
标签: sql-server