我有一个函数,返回5个混合大小写字符。如果我对这个字符串进行查询,不管大小写,它都会返回值。
如何使MySQL字符串查询区分大小写?
我有一个函数,返回5个混合大小写字符。如果我对这个字符串进行查询,不管大小写,它都会返回值。
如何使MySQL字符串查询区分大小写?
当前回答
下面是MySQL版本等于或高于5.5的情况。
添加到/etc/mysql/my.cnf
[mysqld]
...
character-set-server=utf8
collation-server=utf8_bin
...
我尝试的所有其他排序似乎都不区分大小写,只有“utf8_bin”有效。
在这之后不要忘记重新启动mysql:
sudo service mysql restart
根据http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html,还有一个“latin1_bin”。
“utf8_general_cs”不被mysql启动接受。(我把“_cs”读成“区分大小写”- ??)
其他回答
不使用=运算符,您可能希望使用LIKE或LIKE二进制
// this returns 1 (true)
select 'A' like 'a'
// this returns 0 (false)
select 'A' like binary 'a'
select * from user where username like binary 'a'
在它的条件下,它会取a和不取a
好消息是,如果你需要进行区分大小写的查询,这很容易做到:
SELECT * FROM `table` WHERE BINARY `column` = 'value'
Mysql默认情况下不区分大小写,请尝试将语言排序规则更改为latin1_general_cs
下面是MySQL版本等于或高于5.5的情况。
添加到/etc/mysql/my.cnf
[mysqld]
...
character-set-server=utf8
collation-server=utf8_bin
...
我尝试的所有其他排序似乎都不区分大小写,只有“utf8_bin”有效。
在这之后不要忘记重新启动mysql:
sudo service mysql restart
根据http://dev.mysql.com/doc/refman/5.0/en/case-sensitivity.html,还有一个“latin1_bin”。
“utf8_general_cs”不被mysql启动接受。(我把“_cs”读成“区分大小写”- ??)
不需要改变任何DB级别,只是你必须改变SQL查询它将工作。
的例子,
“SELECT * FROM <TABLE> where userId = ' ' ' + iv_userId + ' ' AND password = ' ' ' ' ' + iv_password + ' '";
二进制关键字将区分大小写。