作者 主題: [問題]MYSQL 的正規表示法。  (閱讀 8362 次)

0 會員 與 1 訪客 正在閱讀本文。

asako

  • 活潑的大學生
  • ***
  • 文章數: 242
    • 檢視個人資料
[問題]MYSQL 的正規表示法。
« 於: 2005-05-11 20:17 »
如果想要把 某 table a 的 emp_name 內含有『王』這個字的全抓出來我可用
select * from a where emp_name regexp '王'

那不含『王』的要如何表示?

不能用 like 喔。

耗呆

  • 憂鬱的高中生
  • ***
  • 文章數: 112
    • 檢視個人資料
[問題]MYSQL 的正規表示法。
« 回覆 #1 於: 2005-05-11 20:32 »
select * from a where emp_name not regexp '王'

asako

  • 活潑的大學生
  • ***
  • 文章數: 242
    • 檢視個人資料
[問題]MYSQL 的正規表示法。
« 回覆 #2 於: 2005-05-12 16:35 »
果然正確,感謝。

vt1969

  • 可愛的小學生
  • *
  • 文章數: 3
    • 檢視個人資料
[問題]MYSQL 的正規表示法。
« 回覆 #3 於: 2005-05-13 11:53 »
case 1 用 like 或 regexp , 那個比較快?

耗呆

  • 憂鬱的高中生
  • ***
  • 文章數: 112
    • 檢視個人資料
[問題]MYSQL 的正規表示法。
« 回覆 #4 於: 2005-05-13 16:16 »
引述: "vt1969"
case 1 用 like 或 regexp , 那個比較快?

測試環境:1738筆資料中同樣篩選出25筆資料
like:平均0.0021~0.0022秒
regexp:平均0.0128~0.0145秒

asako

  • 活潑的大學生
  • ***
  • 文章數: 242
    • 檢視個人資料
[問題]MYSQL 的正規表示法。
« 回覆 #5 於: 2005-05-16 10:58 »
用正規在某些狀況下比較好用,尤其是當比對的規則複雜,
如 REGEXP '^[A-S]_ITEM'
如果這個用 like 來表示的話,大概會哭死。