2012-09-14 52 views
1

我有一個消息表。我試圖在表中找到具有符合特定格式的ID代碼的消息。我下面的正則表達式是爲了在PHP中匹配這些值而編寫的,但我想將它移動到MySQL查詢中。MySQL REGEXP不匹配字符串

它正在尋找的識別符代碼的特定格式,看起來像這樣:

[692370613-3CUWU] 

該代碼具有一致格式:

  • 開始,並用硬括號[]
  • 結束
  • 裏面的兩個組件,
    • 第一個是帳號,最小9位數,但可能更高
    • 第二組分是一個字母數字代碼,5個字符,可包括1-9,和大寫字母但不包括「O」
  • 的完整代碼可以在消息

我有一個查詢中的任何地方發生上面寫着:

SELECT * FROM messages 
WHERE 
    msgBody REGEXP '\\[(\d){9,}-([A-NP-Z1-9]){5}\\]' 
     OR 
    msgSubject REGEXP '\\[(\d){9,}-([A-NP-Z1-9]){5}\\]' 

我在其中只在上面進行測試msgBody場採樣值的表中創建一個測試行 - 但它不會返回任何結果。

我在猜測,我錯過了PHP風格的正則表達式與MySQL的轉換。

非常感謝幫助。

謝謝!

回答

1

而不是\d嘗試使用[[:digit:]]

+0

是做到了 - 謝謝! –

1
SELECT * FROM messages 
WHERE 
    msgBody REGEXP '\\[([0-9]){9,}-([A-NP-Z1-9]){5}\\]' 
      OR 
    msgSubject REGEXP '\\[([0-9]){9,}-([A-NP-Z1-9]){5}\\]'