Skip to content

Zeroplex 生活隨筆

軟體開發、伺服器和生活瑣事

小 縮小字型大小。 中 重設字型大小。 大 放大字型大小。

讓 MySQL 在查詢時區分英文大小寫

Posted on 2017 年 10 月 20 日2021 年 3 月 12 日 By 日落 在〈讓 MySQL 在查詢時區分英文大小寫〉中尚無留言

今天又遇到相同的問題,解法有很多種,可以從 SQL 下手,也可以在 table schema 就先做好設定。

SQL 強制區分大小寫

假設原本的 SQL 為:
SELECT * FROM users WHERE name = ‘john’ ;

這樣會撈出「John」、「john」等結果。那麼可以要求 MySQL 使用 binary 的辨識方法去做搜尋:

SELECT * FROM users WHERE binary name = 'johhn';

這樣一來,查詢時 name 欄位就會區分大小寫來做查詢。

修改 table schema

如果在設計 table 時,就確定查詢一定要區分大小寫時,可以在 create table 就先將欄位設定好:

CREATE TABLE users (
    name varchar(100) binary
)

這樣之後下 query 時,只要遇到 name 欄位,就自動會區分大小寫。

修改 collation type

一般常用的 collation 是「utf8_general_ci」,該 collation 最後面的「ci」其實是「Case Insensitive」的意思,也就是不區分大小寫。

如果要讓該 table 的所有欄位都區分大小寫,可以將 collation 的 postfix 改為「cs」或是「bin」,例如:

CREATE TABLE user (
    name varchar(100)
) COLLATE utf8_general_bin ;

以上三個區分大小寫的方法 scope 差異頗大的,可以挑比較適合當下情況的方法來使用。

Tags:MySQL, 資訊學習

文章導覽

Previous Post: 各家廠商針對 wifi Krack 的動作
Next Post: PTT 官方網頁版

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


其他

關於我  (About me)

小額贊助

  文章 RSS Feed

  留言 RSS Feed

Apache AWS Bash C/C++ Docker FreeBSD GCP Git Google Java JavaScript Laravel Linux Microsoft MSSQL MySQL Nginx PHP PHPUnit PostgreSQL Python Qt Ubuntu Unix Vim Web Windows WordPress XD 作業系統 分享 好站推薦 專題 攝影 新奇搞笑 新聞 旅遊 生活雜記 程式設計 網路架站 網頁設計 資訊學習 資訊安全 遊戲 音樂


創用 CC 授權條款
本著作係採用創用 CC 姓名標示-相同方式分享 4.0 國際 授權條款授權.