Jas*_*Cav 27
做这样的事情:
SELECT user
FROM users
WHERE UPPER( user ) = UPPER( 'moustafa' );
Run Code Online (Sandbox Code Playgroud)
基本上你将你的结果转换成一个案例并与搜索词进行比较,搜索词也被转换为大写,实际上忽略了大小写.
Mik*_*ike 18
的UPPER和LOWER功能都可以使用,但也可以通过选择适当的整理和/或塔型影响区分大小写.
例如,latin1_general_cs区分大小写与两个VARCHAR和VARBINARY:
DROP TABLE IF EXISTS `case_sensitive`;
CREATE TABLE `case_sensitive` (
`id` INT NOT NULL AUTO_INCREMENT,
`nonbinary` VARCHAR(255),
`binary` VARBINARY(255),
PRIMARY KEY (`id`)
) ENGINE=InnoDB COLLATE latin1_general_cs;
INSERT INTO `case_sensitive` (`nonbinary`, `binary`) VALUES ('A', 'A');
SELECT * FROM `case_sensitive` WHERE `nonbinary` = 'A';
+----+-----------+--------+
| id | nonbinary | binary |
+----+-----------+--------+
| 1 | A | A |
+----+-----------+--------+
1 row in set (0.00 sec)
SELECT * FROM `case_sensitive` WHERE `binary` = 'A';
+----+-----------+--------+
| id | nonbinary | binary |
+----+-----------+--------+
| 1 | A | A |
+----+-----------+--------+
1 row in set (0.00 sec)
SELECT * FROM `case_sensitive` WHERE `nonbinary` = 'a';
Empty set (0.00 sec)
SELECT * FROM `case_sensitive` WHERE `binary` = 'a';
Empty set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
虽然latin1_general_ci是不区分大小写用VARCHAR,并区分大小写有VARBINARY:
DROP TABLE IF EXISTS `case_insensitive`;
CREATE TABLE `case_insensitive` (
`id` INT NOT NULL AUTO_INCREMENT,
`nonbinary` VARCHAR(255),
`binary` VARBINARY(255),
PRIMARY KEY (`id`)
) ENGINE=InnoDB COLLATE latin1_general_ci;
INSERT INTO `case_insensitive` (`nonbinary`, `binary`) VALUES ('A', 'A');
SELECT * FROM `case_insensitive` WHERE `nonbinary` = 'A';
+----+-----------+--------+
| id | nonbinary | binary |
+----+-----------+--------+
| 1 | A | A |
+----+-----------+--------+
1 row in set (0.00 sec)
SELECT * FROM `case_insensitive` WHERE `binary` = 'A';
+----+-----------+--------+
| id | nonbinary | binary |
+----+-----------+--------+
| 1 | A | A |
+----+-----------+--------+
SELECT * FROM `case_insensitive` WHERE `nonbinary` = 'a';
+----+-----------+--------+
| id | nonbinary | binary |
+----+-----------+--------+
| 1 | A | A |
+----+-----------+--------+
SELECT * FROM `case_insensitive` WHERE `binary` = 'a';
Empty set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
因此,您应该选择最适合您需求的排序规则和列类型.您可以在这里找到更多信息:
字符串搜索中的大小写敏感度
http://dev.mysql.com/doc/refman/5.1/en/case-sensitivity.html
MySQL中的字符集和排序规则
http://dev.mysql.com/doc/refman/5.1/en/charset-mysql.html
MySQL支持的字符集和排序规则
http://dev.mysql.com/doc/refman/5.1/en/charset-charsets.html
通常,您应该使用WHERE UPPER(COLUMNNAME)= UPPER('valuetocompare').
或者,如果你想进行子字符串搜索,你可以使用像UPPER('%valuetocompare%')这样的WHERE UPPER(COLUMNNAME)