确定WHERE子句中的CaseSensitive

mKo*_*bel 1 mysql sql oracle11g sql-server-2008

例如,TableColumn可以包含表单中的值New,new或者NEW,我如何编写仅返回的查询

SELECT * FROM myTable
WHERE myColumn = 'New'
Run Code Online (Sandbox Code Playgroud)

但不返回TableRows包含newNEW

Gal*_*alz 6

对于MySQL,一个简单的选项是:

SELECT * FROM myTable
WHERE myColumn = 'New'
AND BINARY(myColumn) = BINARY('New');
Run Code Online (Sandbox Code Playgroud)

第二个条件在逻辑上足够,但如果表很大(myColumn无法使用索引),则查询会变慢.2个条件的组合允许索引用于第一个条件,然后过滤掉不匹配的情况.