搜索時,我怎麼能忽略大小寫的區別與MySQL搜索我怎麼能忽略大小寫的區別與MySQL
回答
做這樣的事情的時候:
SELECT user
FROM users
WHERE UPPER(user) = UPPER('moustafa');
基本上您將結果轉換爲一種情況,並將其與轉換爲大寫的搜索詞進行比較,從而有效地忽略大小寫。
通常,您應該使用WHERE UPPER(COLUMNNAME)= UPPER('valuetocompare')。
或者,您culd使用WHERE UPPER(COLUMNNAME)像UPPER(「%valuetocompare%」),如果你想要做一個字符串搜索
您可以存儲在MySQL中的數據更低的情況下,只是進行查詢在上面。
可以使用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)
而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)
你應該因此請選擇最適合您需求的整理和列類型。你可以在這裏找到更多的信息:
區分大小寫的字符串搜索
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
我在你搜索的列上使用utf8_unicode_(CI)不區分大小寫的排序....和它的工作原理
SELECT * FROM table_name WHERE column_name1 LIKE '%A%' OR column_name1 LIKE '%a%';
只有複製粘貼代碼是不夠的,你必須解釋它的作用和方式。 – peterh 2015-12-09 05:31:35
@peterh同意。 – 2015-12-09 08:00:42
- 1. 忽略區分大小寫
- 2. 忽略大小寫與__startswith
- 3. 忽略在regex.replace中區分大小寫?
- 4. 排序MySQL查詢忽略大小寫
- 5. 如何忽略大小寫在與string.replace
- 6. LINQ忽略大小寫
- 7. 忽略大小寫difflib.get_close_matches()
- 8. 忽略大小寫boost :: regexp
- 9. 被忽略大小寫
- 10. 忽略大小寫validate_exclusion
- 11. 替換忽略大小寫
- 12. 在區分大小寫的列中忽略大小寫的搜索(並且不區分大小寫)
- 13. 我怎麼能忽略css屬性
- 14. 我怎麼忽略搖籃
- 15. PHP和MySQL:我怎麼能忽略從選擇
- 16. PHP和MySQL:我怎麼能忽略空變量從選擇
- 17. 如何使Class.forName忽略小寫/大寫
- 18. SQL * Loader的 - 我怎麼能忽略與特定charactre某些行
- 19. 忽略大小寫的UITextField/UITextView的
- 20. 區別忽略GUID
- 21. 忽略JDO查詢中的大小寫
- 22. Backbone.js的:Collection.Get(ID) - >忽略大小寫
- 23. 忽略XSLT中的大小寫
- 24. 忽略大小寫和文化的String.Contains()
- 25. 的Microsoft Visual Basic 6.5忽略大小寫
- 26. 如何忽略RegularExpression中的大小寫?
- 27. 忽略dplyr包中的大小寫
- 28. Mysql搜索「我」不區分大小寫
- 29. 小寫windows.h和大寫windows.h的區別?
- 30. 分組時忽略大小寫
+1:將評估的兩側驅動到同一個案例(UPPER或LOWER)將提供不區分大小寫的搜索。警告:如果存在索引,則在列上使用函數不會使用索引。 – 2010-06-30 15:44:01