MySQL LIKE 語法
LIKE運算符用於WHERE表達式中,以搜索匹配字段中的指定內容,語法如下:
WHERE column LIKE pattern
WHERE column NOT LIKE pattern
在LIKE全面加上NOT運算符時,表示與LIKE相反的意思,即選擇column不包含pattern的數據記錄
LIKE通常與通配符%一起使用,%表示通配pattern中出現的內容,而不加通配符%的LIKE語法,表示精確匹配,其實際效果等同於 = 等於運算符
LIKE使用示例
下面是一個使用LIKE查詢的數據的例子:

SELECT * FROM user WHERE username LIKE '小%';
返回的查詢結果:

上面這個例子是找出所有username以"小"開頭的記錄
注意:小%表示以小開頭,而后面可以是任意字符,同樣,%小,表示以”小”結尾,而%小%則表示包含“小”這個字符(並一同包含"%小"和"小%"這兩種情況)
MySQL LIKE 大小寫
MySQL LIKE 匹配字符的時候,默認情況下是不區分大小寫的,如果在需要區分大小寫的時候,可以加入BINARY操作符:
SELECT * FROM username WHERE LIKE BINARY '%azz%'
SELECT * FROM username WHERE LIKE BINARY '%Azz%'
MySQL LIKE 中文匹配
由於數據存儲編碼問題,在某些情況下,MySQL進行LIKE搜索返回的數據除了符合要求的數據外,往往還會返回許多不相干的數據,這時候也需要在LIKE后面加上BINARY操作符進行二進制比較
SELECT * FROM username WHERE LIKE BINARY '%小%'
注意:
當LIKE匹配時加上BINARY操作符之后,則會嚴格區分英文大小寫,因此檢索的內容中如果出現中英文混合且需要忽略英文大小寫的時候,就會遇見問題,這個時候可以引入MySQL中的UPPER()和COUNT()函數:
UPPER() :將英文字符轉成大寫,同UCASE()
CONCAT():將多個字符串連接成一個字符串
所以,當我們要進行中英文混合匹配檢索且要忽略英文大小寫時候,可以用下面的語句:
SELECT * FROM username WHERE UPPER(username) LIKE BINARY CONCAT('%',UPPER('a中文b'),'%');
LIKE 的效率
LIKE運算符要對字段數據進行逐一掃描匹配,實際執行的效率比較差
