SQL和Case不敏感条件

时间:2011-07-25 18:57:34

标签: php mysql sql sql-server pdo

我注意到在MySQL中,WHERE x = 'Test'之类的where子句无论如何都匹配('TEST','test'等)

使用PDO时,可以假设大多数数据库服务器都是这种情况吗?例如,如果我要使用MSSQL或Oracle,那么这是相同的情况吗?

4 个答案:

答案 0 :(得分:8)

它不是它依赖的服务器,而是整理。大多数数据库将默认为不区分大小写的排序规则,因此您可以假设,但如果遇到区分大小写的数据库,则很容易更改。

答案 1 :(得分:1)

默认情况下,Oracle对数据区分大小写 例如

select * from 'test';

不等于

select * from 'TEST';

自从我上次使用它们以来已经有一段时间,但我似乎记得Informix beiung区分大小写,而Sybase我认为这取决于整理。

正如其他responseandt所述,SQL Server依赖于排序规则。

所以我认为唯一真正的答案是它取决于RDBMS

答案 2 :(得分:1)

默认情况下,SQL Server不区分大小写。在SQL Server中,您可以使用排序规则来使用区分大小写的比较,请参阅here

默认情况下,Oracle区分大小写。您可以使用“UPPER”语句执行不区分大小写的搜索,请参阅here

答案 3 :(得分:0)

你是对的,sql通常对字符串匹配不区分大小写,几乎适用于所有服务器。

以下是一篇文章,展示如何以不同的方式进行案例敏感性匹配,如果您需要的话!

http://vyaskn.tripod.com/case_sensitive_search_in_sql_server.htm