1. 程式人生 > >mysql正則查詢 模糊查詢

mysql正則查詢 模糊查詢

lec clas 找不到 not code cap col and regexp

-- ==============正則查詢================
/*
SQL默認是忽略大小寫的
正則模式使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它們是同義詞)。正則即字段值包含正則的內容即可
.      匹配任何單個的字符,表示任意單字符
[...]  匹配包含方括號內某單個字符的字符串,[0-9]匹配0到9之間的某個數字
*      匹配零個或多個在它前面的字符
{n}    匹配n個在它前面的字符

如果希望大小寫都匹配上可以這樣寫。[aA] 匹配大小寫的 a,[a-zA-Z] 則匹配大小寫的任何 a-z 單個字母。
但默認是不區分大小寫的 [b] 也可匹配上還有 B 的字符串
要匹配的字符在字段起始處,使用 ^ ,在字段的結尾用 $
如果是中文字符,可能在使用時需要註意一下。

*/ -- 字段name只有四個值,name_aA ,name_aB , name_人人 ,name_%好好_ SELECT * FROM `test_t` WHERE NAME REGEXP [a-z]; -- 包含a到z某個字符的字符串,能匹配到 name_aA 和 name_aB 和 name_人人 和 name_%好好_ SELECT * FROM `test_t` WHERE NAME REGEXP ^n.....b$; -- 以n開頭B結尾,7個字符長度的字符串,能匹配到 name_aB SELECT * FROM `test_t` WHERE NAME RLIKE
d*; -- 包含0個或多個d的字符串,能匹配到該字段的所有值,因為 * 前的字符0個也匹配 SELECT * FROM `test_t` WHERE NAME RLIKE B{1}$; -- 結尾是一個B,能匹配到name_aB -- ==============模糊查詢================ -- MySql的like語句中的通配符:百分號、下劃線和escape -- % 表示任意個或多個任意字符。可匹配任意類型和長度的字符。 SELECT * FROM `test_t` WHERE NAME LIKE
%me_aB; -- 查詢結果 name_aB -- 如果需要找出 name 中既有 b 又有 a 的記錄,使用 and 條件 SELECT * FROM `test_t` WHERE NAME LIKE %b% AND NAME LIKE %a%; -- 若使用 SELECT * FROM `test_t` WHERE NAME LIKE ‘%b%a%‘; 則找不到 name_aB -- _ 表示任意單個字符。匹配單個任意字符,它常用來限制表達式的字符長度語句(可以代表一個中文字符) SELECT * FROM `test_t` WHERE NAME LIKE _______; -- 能查詢到 name_aA 和 name_aB 還有 name_人人 這7個字符長度的值 -- 如果要查字符 % 或者 _ 使用 ESCAPE,轉義字符後面的 % 或 _ 就不作為通配符了,註意前面沒有轉義字符的%和_仍然起通配符作用 SELECT * FROM `test_t` WHERE NAME LIKE name_/%%好/_ ESCAPE /; -- 查詢結果 name_%好好_

mysql正則查詢 模糊查詢