MySQL严格等同于运营商?

时间:2012-06-25 16:52:30

标签: mysql sql operators equals

在许多编程语言中,有一个基本的equals运算符,它将查看两个字符串的文本是否相等:

if ("Hi" == "hi") {
  //this code runs
}

但也有严格等于运营商:

if ("Hi" === "hi") {
  //this code will never run
}

MySQL中的上述代码片段是否有等效的运算符? =运算符只是没有削减它。如果我跑:

SELECT * FROM users WHERE name = 'john';

MySQL将返回带John的行,大写为“J”。

感谢您的时间。

2 个答案:

答案 0 :(得分:11)

您可以使用COLLATE运算符将列转换为区分大小写的排序规则:

SELECT * FROM users WHERE name LIKE 'john' COLLATE utf8_bin

MySQL documentation,区分大小写。

答案 1 :(得分:2)

您可以使用STRCMP

SELECT * FROM users WHERE STRCMP(name, 'john') = 0;

注意:

  • 0 =相同
  • -1 =第一个较小的元素
  • 1 =第一个元素更大

如果您使用的是MySQL 4.0+(STRCMP不再区分大小写),必须使用COLLATES

  • COLLATE utf8_general_ci =不区分大小写(ci)
  • COLLATE utf8_general_cs =区分大小写(cs)