1. 程式人生 > >Mysql中正則表示式Regexp常見用法

Mysql中正則表示式Regexp常見用法

Mysql中Regexp常見用法

  • 模糊匹配,包含特定字串
# 查詢content欄位中包含“車友俱樂部”的記錄
select * from club_content where content regexp '車友俱樂部'

# 此時的regexp與like的以下用法是等同的
select * from club_content where content like '%車友俱樂部%'
  • 模糊匹配,以特定字串開頭
# 查詢content欄位中以“車友”開頭的記錄
select * from club_content where content regexp '^車友'

# 此時的regexp與like的以下用法是等同的
select * from club_content where content like '車友%'
  • 模糊匹配,以特定字串結尾
# 查詢content欄位中以“車友”結尾的記錄
select * from club_content where content regexp '車友$'

# 此時的regexp與like的以下用法是等同的
select * from club_content where content like '%車友'
  • 模糊匹配,或關係
# 查詢content欄位中包含“心得”、“分享”或“技術貼”
select * from club_content where content  REGEXP '心得|分享|技術貼'
  • 模糊匹配,不包含單個字元
# 查詢content欄位中不包含“車”字、“友”字的記錄
select * from club_content where content  REGEXP [^車友]

這個結果跑出來一看大吃一驚,竟然把所有記錄給跑出來,這是為什麼呢?
因為一旦加了這個方括號"[]",它就把裡面的內容拆成單個的字元再匹配,它會逐個字元去匹配判斷是不是等於“車”,或者是不是等於“友“,返回的結果是一組0、1的邏輯值。

如果想匹配不包含特定字串,該怎麼實現呢?

  • 模糊匹配,不包含特定字串
# 查詢content欄位不包含“車友”字串的記錄
select * from club_content where content not REGEXP '車友'

歡迎關注微信公眾號“資料分析師手記”
在這裡插入圖片描述