使MySQL查詢區分大小寫的實現方法

我們在MySQL中使用SELECT語句查詢時,可不可以使查詢區分大小寫?今天從網絡上找到了方法,現總結如下。

1、一種方法是可以設置表或行的collation,使其為binary或case sensitive。在MySQL中,對于column Collate其約定的命名方法如下:

*_bin: 表示的是binary case sensitive collation,也就是說是區分大小寫的
*_cs: case sensitive collation,區分大小寫
*_ci: case insensitive collation,不區分大小寫

###########
# Start binary collation example
###########
mysql> create table case_bin_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_bin;
Query OK, 0 rows affected (0.02 sec)

mysql> INSERT INTO case_bin_test VALUES (‘Frank’),(‘Google’),(‘froogle’),(‘flickr’),(‘FlicKr’);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM case_bin_test WHERE word LIKE ‘f%’;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

mysql> SELECT * FROM case_bin_test WHERE word LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.00 sec)

###########
# End
###########

2、另外一種方法

###########
# Start case sensitive collation example
###########

mysql> create table case_cs_test (word VARCHAR(10)) CHARACTER SET latin1 COLLATE latin1_general_cs;
Query OK, 0 rows affected (0.08 sec)

mysql> INSERT INTO case_cs_test VALUES (‘Frank’),(‘Google’),(‘froogle’),(‘flickr’),(‘FlicKr’);
Query OK, 5 rows affected (0.00 sec)
Records: 5 Duplicates: 0 Warnings: 0

mysql> SELECT * FROM case_cs_test WHERE word LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.00 sec)

mysql> SELECT * FROM case_cs_test WHERE word LIKE ‘f%’;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

###########
# end
###########

3、還有一種方法就是在查詢時指定collation

mysql> create table case_test (word VARCHAR(10)) CHARACTER SET latin1;
Query OK, 0 rows affected (0.01 sec)

mysql> INSERT INTO case_test VALUES (‘Frank’),(‘Google’),(‘froogle’),(‘flickr’),(‘FlicKr’);
Query OK, 7 rows affected (0.01 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> SELECT * FROM case_test WHERE word LIKE ‘f%’;
+———+
| word |
+———+
| Frank |
| froogle |
| flickr |
| FlicKr |
+———+
6 rows in set (0.01 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| froogle |
| flickr |
| FlicKr |
+———+
6 rows in set (0.01 sec)

mysql> SELECT * FROM case_test WHERE word COLLATE latin1_bin LIKE ‘F%’;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.05 sec)

mysql> SELECT * FROM case_test WHERE word COLLATE latin1_bin LIKE ‘f%’;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘f%’ COLLATE latin1_bin;
+———+
| word |
+———+
| froogle |
| flickr |
+———+
2 rows in set (0.00 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘F%’ COLLATE latin1_bin;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.01 sec)

mysql> SELECT * FROM case_test WHERE word LIKE ‘F%’ COLLATE latin1_general_cs;
+———+
| word |
+———+
| Frank |
| FlicKr |
+———+
4 rows in set (0.04 sec)

? 版權聲明
THE END
喜歡就支持一下吧
點贊15 分享