2017-08-01 56 views
1

我正在開發一個系統,使用mysql REGEXP來查找一些行。
在xampp localhost中,這很好用。
我有這個疑問:mysql REGEXP不工作在網絡版

SELECT COUNT(*) FROM users WHERE departments REGEXP '\\D(7|1|2|3|4|5|6)\\D' LIMIT 0, 25 

,並返回符合我REGEXP某些行。

這是必須匹配正則表達式我users錶行之一的departments column值:在users表,我上傳我的項目文件和數據庫[1,3,4,6,7]

用相同的數據庫和相同的數據,但它不返回任何值。
我曾經直接在Navicat Premium中測試我的查詢,並且它沒有返回任何行。
我的本地主機上的mysql版本是4.6.5.2,在我的在線版本是4.6.6。
你覺得我忘了什麼嗎?
任何意見,建議,表示讚賞。

+0

您是否嘗試過沒有LIMIT部分? – RealCheeseLord

+0

@RealCheeseLord是的,不作任何改變。 –

回答

2

REGEXP '[^0-9][1-7][^0-9]' 

\D更換你的模式是不支持,你可以在括號表達式使用範圍。

圖案的詳細資料

  • [^0-9] -

如果您需要任何字符,但數字 - 任何字符,但數字

  • [1-7] - 從1一個數字,7
  • [^0-9]也匹配字符串的開始/結尾,使用

    REGEXP '(^|[^0-9])[1-7]($|[^0-9])' 
    

    (^|[^0-9])該組串(^)的開始或任何字符,但一個數字和($|[^0-9])匹配任何非數字或字符串($)的端部相匹配。

  • +1

    它正在工作!非常感謝你。我不知道\ D不支持! (然而,我的正則表達式在我的xampp本地主機中工作!!!!!)。無論如何,你救了我的一天:D謝謝 –

    +0

    @MahyarKhanbabaei PHP使用PCRE正則表達式庫,而MySQL'REGEXP'只支持一小部分POSIX正則表達式。 –

    +0

    我現在發現了它。沒關係,謝謝。 –