UPPER()和LOWER()不是必需的?

JSu*_*uar 4 sql sql-server-2005 case-sensitive sql-server-2008

有一段时间我认为,为了WHERE正确评估标准,我需要考虑区分大小写.我会用UPPER(),LOWER()当情况无关紧要.但是,我发现以下查询产生相同的结果.

SELECT * FROM ATable WHERE UPPER(part) = 'SOMEPARTNAME'
SELECT * FROM ATable WHERE part        = 'SOMEPARTNAME'
SELECT * FROM ATable WHERE part        = 'somepartname'
Run Code Online (Sandbox Code Playgroud)

SQL大小写敏感字符串比较说明使用区分大小写的排序规则.这是强制区分大小写的唯一方法吗?此外,如果你有一个区分大小写排序时,将UPPER()LOWER()有必要吗?

感谢帮助.

Mit*_*eat 5

不区分大小写的排序规则的常见的SQL Server默认意味着UPPER()LOWER()比较字符串时是不需要的.

实际上是一种表达方式

SELECT * FROM Table WHERE UPPER(part) = 'SOMEPARTNAME' 
Run Code Online (Sandbox Code Playgroud)

由于应用于part比较左侧列的功能,因此也不会使用可用索引.