MySQL學習筆記:like和regexp的區別

1、like關鍵字

  like有兩個模式:_和%git

  • _:表示單個字符,用來查詢定長的數據
select name from table where name like '陳__';
  • %:表示0個或多個任意字符
select name from table where name like '陳%'; select name from table where name like '%宏%';

 

2、regexp關鍵字

  1.基本字符匹配正則表達式

select * from table where col regexp '.000';

  2.like匹配整個值 通配符%spa

  3.regexp可以使用正則自由定製 定位符號^$
  4.若是要區分大小寫,應該使用BINARY關鍵字,如where xxx REGEXP BINARY 'Hello.000'
  5.使用|實現or效果code

select * from table where col regexp '1000|2000';

  6.匹配幾個字符之一,用[和]擴起來regexp

select * from table where col regexp '[abcde]';

  7.匹配範圍:[0-9] [A-Z] [a-z]blog

  • [^0-9] ^表示非,即匹配不是0-9
  • 後面的比前面大
select * from table where col regexp '[0-9]Ton';

  8.匹配特殊字符使用\\進行轉義it

  • \\.可以匹配.
  • \\f換頁
  • \\n換行
  • \\r回車
  • \\t製表
  • \\縱向製表

注意:
  a)爲了匹配\自己,須要使用\\\
  b)在通常狀況下正則表達式的轉義加一個「\」就能夠了,在MySQL中須要加兩個。table


  9.匹配字符類(Posix字符類)class

  

  使用的時候須要外面加一層[],例如[[:digit:]]變量

select * from table where col regexp 'name[[:digit:]]';

  10.匹配多個實例

  • * 0或多個
  • + 1或多個
  • ? 0或1個
  • {n} 指定n個
  • {n,} 很多於n個
  • {n,m} n-m個
select * from table where col regexp '[0-9]{1,3}';

  11.定位符

  • ^ 開始
  • $ 結尾
  • [[:<:]] 詞的開始
  • [[:>:]] 詞的結尾

  12.^有兩個用法,一個是非,一個是文本的開始,用[]中表示非,不然是文本的開始。
  13.MySQL的正則比較簡化,沒有惰性匹配/貪婪匹配,[]內不支持\w\s\d這種語法,也不支持中文。
  14.這兩種模式不要混着用,like模式是不支持正則表達式的,REGEXP模式也不認識_和%。
  15.注意:regexp == rlike 同義詞  not like  not regexp
  16.in不支持模糊查詢,如:

select * from table where name in ('%宏%');

  17.like concat('%',name,'%')做用在於name爲變量,在傳參的時候方便。


END 2018-06-01 15:00:02

相關文章
相關標籤/搜索