mysql模糊查询 or_mysql的模糊查询
mysql模糊查詢like/REGEXP
(1)like / not like
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 '/'; 意思就是說/之后的_不作為通配符
(2)正則表達式
規則如下:
^ 匹配字符串的開始部分
$ 匹配字符串的結束部分
. 匹配任何字符(包括回車和新行)
a* 匹配0或多個a字符的任何序列
a+ 匹配1個或多個a字符的任何序列
a? 匹配0個或1個a字符
de|abc 匹配序列de或abc
(abc)* 匹配序列adc的0個或者多個實例
{n}、{m,n} {n}或{m,n}符號提供了編寫正則表達式的更通用方式,能夠匹配模式的很多前述原子(或“部分”)。m和n均為整數。
a* 可被寫為a{0,}
a+ 可被寫為a{1,}
a? 可被寫為a{0,1}
[a-dX] 匹配任何是a,b,c,d或者X的字符,兩個其他字符之間的’-'字符構成一個范圍
[^a-dX] 匹配任何不是a,b,c,d或者X的字符,前面的字符’^'是否定的意思
舉例如下:
^,匹配字符串開始位置,還是上面的例子,查詢所有姓王的人名
select name from 表名 where name regexp '^王';
$,匹配字符串結束位置,如查詢所有姓名末尾是“明”的人名
select name from 表名 where name regexp '明$';
.,匹配除\n之外的任意單個字符,類似于_,就不寫sql語句了
[……],匹配[]中包含的任何一個字符,abcdef……xyz可以簡寫為[a-z],0123456789簡寫成[0-9],如查詢出w/z/s開頭的的人名
select name from 表名 where name regexp '^[wzs]';
[^……],匹配不包含在[]的字符,如查詢出除了w/z/s開頭之外的人名
select name from 表名 where name regexp '^[^wzs]';
a|b|c,匹配a或b或c,如將績效為A-或A或A+的員工查出來,假設績效列名performance
select performance from 表名 where performance regexp 'A-|A|A+';
*,重復0次或多次,熟悉javascript正則的同學都知道
'str*'可以匹配st/str/strr/strrr……
?,重復0次或1次
'str?'可以匹配st/str
總結
以上是生活随笔為你收集整理的mysql模糊查询 or_mysql的模糊查询的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: HTML+CSS+JS实现 ❤️六边形圆
- 下一篇: 基于Java springboot+vu
