有人能告诉我,如果MySQL SELECT查询是大小写敏感或大小写不敏感默认?如果不是,我要发送什么查询,这样我就可以做一些事情:

SELECT * FROM `table` WHERE `Value` = "iaresavage"

实际上,价值的真正价值是IAreSavage。


当前回答

带有二进制标志设置的字符串字段将始终区分大小写。 如果你需要对非二进制文本字段进行区分大小写的搜索,请使用以下方法: SELECT 'test' REGEXP二进制'test'作为结果;

其他回答

使用二进制

这是一个简单的选择

SELECT * FROM myTable WHERE 'something' = 'something'

= 1

这是一个二进制选择

SELECT * FROM myTable WHERE BINARY 'something' = 'something'

or

SELECT * FROM myTable WHERE 'something' = BINARY '

= 0

默认是不区分大小写的,但是 下一个最重要的事情 您应该看看该表是如何创建的 首先,因为你可以指定大小写 创建表时的敏感性。

下面的脚本创建一个表。 注意在底部,它说COLLATE latin1_general_cs。 结尾的cs表示区分大小写。 如果你想要 表是不区分大小写的,你要么保留它 或者使用“COLLATE latin1_general_ci”。

   CREATE Table PEOPLE (

       USER_ID  INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

       FIRST_NAME  VARCHAR(50) NOT NULL,
       LAST_NAME  VARCHAR(50) NOT NULL,

       PRIMARY KEY (USER_ID)

   )

   ENGINE=MyISAM DEFAULT CHARACTER SET latin1
    COLLATE latin1_general_cs AUTO_INCREMENT=0;

如果您的项目是这样的,您可以创建您的 自己的表,那么指定您的 在创建表时选择大小写。

您选择的排序规则集是否区分大小写。

您可以小写的值和传递的参数:

SELECT * FROM `table` WHERE LOWER(`Value`) = LOWER("IAreSavage")

另一种(更好的)方法是使用文档中提到的COLLATE操作符

它们是不区分大小写的,除非你做二进制比较。