2017-02-13 55 views
0

我的查詢:爲什麼不這項工作正則表達式的MySQL?

SELECT * FROM `tblforummessages` 
WHERE `FMMessage` REGEXP '^[a-zA-Z0-9 :,.!?éáőúöüóűíÉÁŐÚÖÜÓŰÍ()\t\n\r\-\"\„]{9,}$' 

我的文字是:

「尊敬的瑪麗埃塔想告知的血債票款的 (13件)總池,所有的桑拿(4) 你可以使用。我想提請你注意血液債務人門票任何一天星期日除外 可用於2009年12月23日,直到「

在線驗證此說文通爲這種表達,但不要在SQL 工作中,我試圖用

CAST(`FMMessage` AS CHAR CHARACTER SET utf8) COLLATE utf8_general_ci 

,但沒有幫助。

+0

你的正則表達式中包含\「是一個雙引號的字符串您的查詢是跑了嗎?如果有任何傷害它逃脫雙引號,並可能搞砸了你的正則表達式 –

+0

你有正確的,\」擋住了我的查詢,但我兩者都需要按類型過濾(「和」)比我該怎麼辦呢?不知道 –

+0

'」'是確定的,但的'-'必須在括號表達式的結束。和UNESCAP。不知道的空格。可嘗試'^ [A-ZA-Z0-9 :,éáőúöüóűíÉÁŐÚÖÜÓŰÍ()\ t \ n \ r」「 - !] {9} $' –

回答

0

MySQL不支持REGEXP多字節字符。

檢查整個FMMessage也傷害了至少9個字符,使用CHAR_LENGTH(FMMessage) >= 9。目前還不清楚是什麼REGEXP其餘試圖做到這一點。你似乎有在文本中的所有正常韋伯斯特可能的字符,但不包括某些(不是全部)其他歐洲文字。 Angol是允許的,甚至一些德國由於雙S的。

假設編碼是UTF-8(或utf8mb4)可能將是可能做

HEX(FMMessage) REGEXP '...' 

當正則表達式是|分離的2-和4-字符的十六進制對一個長字符串。整個常規表達式將大約300個字符長。

相關問題