MySql模糊查询like通配符简介
%代表隨意多個字符 _代表一個字符 在 MySQL中。SQL的模式缺省是忽略大寫和小寫的
正則模式使用REGEXP和NOT REGEXP操作符。
“.”匹配不論什么單個的字符。一個字符類
“[...]”匹配在方括號內的隨意單個字符
“ * ”匹配零個或多個在它前面的東西
正則表達式是區分大寫和小寫的。可是假設你希望,你能使用一個字符類匹配兩種寫法。
比如。“[aA]”匹配小寫或大寫的“a”而“[a-zA-Z]”匹配兩種寫法的不論什么字母。
在模式開始處使用“^”或在模式的結尾用“$”。
為了找出以“三”開頭的名字。使用“^”匹配名字的開始。
FROM [user] WHERE u_name REGEXP ‘^三’;
將會把u_name為 “三腳貓”等等以“三”開頭的記錄全找出來。
為了找出以“三”結尾的名字,使用“$”匹配名字的結尾。
FROM [user] WHERE u_name REGEXP ‘三$’;
將會把u_name為“張三”。“張貓三”等等以“三”結尾的記錄全找出來。
你也能夠使用“{n}”“反復n次”操作符重寫先前的查詢:
FROM [user] WHERE u_name REGEXP ‘b{2}$’;
MySql的like語句中的通配符:百分號、下劃線和escape
%:表示隨意個或多個字符。可匹配隨意類型和長度的字符。
Sql代碼
select * from user where username like '%huxiao';
select * from user where username like 'huxiao%';
select * from user where username like '%huxiao%';
另外。假設須要找出u_name中既有“三”又有“貓”的記錄,請使用and條件
SELECT * FROM [user] WHERE u_name LIKE ‘%三%’ AND u_name LIKE ‘%貓%’
若使用 SELECT * FROM [user] WHERE u_name LIKE ‘%三%貓%’
盡管能搜索出“三腳貓”,但不能搜索出符合條件的“張貓三”。
_:表示隨意單個字符。匹配單個隨意字符,它經常使用來限制表達式的字符長度語句:(能夠代表一個中文字符)
Sql代碼
select * from user where username like '_';
select * from user where username like 'huxia_';
select * from user where username like 'h_xiao';
假設我就真的要查%或者_,怎么辦呢?使用escape,轉義字符后面的%或_就不作為通配符了,注意前面沒有轉義字符的%和_仍然起通配符作用
Sql代碼
select username from gg_user where username like '%xiao/_%' escape '/';
select username from gg_user where username like '%xiao/%%' escape '/';
二、正則模式
由MySQL提供的模式匹配的其它類型是使用擴展正則表達式。當你對這類模式進行匹配測試時,使用REGEXP和NOT REGEXP操作符(或RLIKE和NOT RLIKE,它們是同義詞)。
擴展正則表達式的一些字符是:
“.”匹配不論什么單個的字符。(單字節字符)
一個字符類“[...]”匹配在方括號內的不論什么字符。
比如,“[abc]”匹配“a”、“b”或“c”。
為了命名字符的一個范圍。使用一個“-”。“[a-z]”匹配不論什么小寫字母,而“[0-9]”匹配不論什么數字。
“ * ”匹配零個或多個在它前面的東西。比如,“x*”匹配不論什么數量的“x”字符,“[0-9]*”匹配的不論什么數量的數字,而“.*”匹配不論什么數量的不論什么東西。
正則表達式是區分大寫和小寫的,可是假設你希望。你能使用一個字符類匹配兩種寫法。比如。“[aA]”匹配小寫或大寫的“a”而“[a-zA-Z]”匹配兩種寫法的不論什么字母。
假設它出如今被測試值的不論什么地方。模式就匹配(僅僅要他們匹配整個值。SQL模式匹配)。
為了定位一個模式以便它必須匹配被測試值的開始或結尾,在模式開始處使用“^”或在模式的結尾用“$”。
為了說明擴展正則表達式怎樣工作,上面所看到的的LIKE查詢在以下使用REGEXP重寫:
為了找出以“三”開頭的名字。使用“^”匹配名字的開始。
FROM [user] WHERE u_name REGEXP ‘^三’;
將會把u_name為 “三腳貓”等等以“三”開頭的記錄全找出來。
為了找出以“三”結尾的名字,使用“$”匹配名字的結尾。
FROM [user] WHERE u_name REGEXP ‘三$’;
將投入u_name至“喬 - 史密斯”。“張貓3”等等。“三”找出在整個記錄的末尾。
您還可以使用“{n}”“反復n次要”操作改寫前面的查詢:
FROM [user] WHERE u_name REGEXP ‘b{2}$’;
注意:假設中國文字,您可能需要使用的時候要注意。
總結
以上是生活随笔為你收集整理的MySql模糊查询like通配符简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】Java压缩和解压文件工具类Zip
- 下一篇: App_Code 引起的 ambiguo