例如,TableColumn可以包含形式New
,new
或NEW
中的值,如何编写仅返回的查询
SELECT * FROM myTable
WHERE myColumn = 'New'
但不返回TableRows包含new
或NEW
对于MySQL,一个简单的选项是:
SELECT * FROM myTable
WHERE myColumn = 'New'
AND BINARY(myColumn) = BINARY('New');
第二个条件在逻辑上是足够的,但如果表很大(myColumn
上的索引不能使用),则查询会变慢。 2个条件的组合允许索引用于第一个条件,然后过滤掉不匹配的情况。
您可以在where子句中使用COLLATE
SELECT *
FROM myTable
WHERE myColumn COLLATE latin1_general_cs = 'New'
使这个列区分大小写的最佳方法是更改此特定列,如果charset是UTF8更改它的整理以整理utf8_bin,在修改列后它搜索区分大小写。
即我有一个表名为people name name的人。
alter table people
modify column name varchar(50) charset utf8 collate utf8_bin;
注意:你可以使用varchar数据类型到varbinary,它工作正常..
SELECT * FROM users
WHERE BINARY userid ='Rahul';
mysql不检查单词的情况所以在用户名或用户ID的情况下我们shouold需要检查案例也是为了更安全。我希望这能帮到您