2015-04-02 88 views
0

我有以下與字符串MySQL的REGEXP alnum匹配問題

我知道什麼是綜合類¢€央行「¢■當軍隊被打敗等。

此MySQL命令返回1

select "I know what that’s like when an army is defeated." REGEXP '[^[:punct:] A-Za-z0-9]' 

但是,當我使用代替 'alnum'[A-ZA-Z0-9],則返回0。

select "I know what that’s like when an army is defeated." REGEXP '[^[:punct:] [:alnum:]]' 

任何人都可以請解釋原因?

謝謝!

回答

0

HEX(CONVERT(BINARY(CONVERT("’s" USING latin1)) USING utf8)) - >C3A2E282ACE284A273 - >’s(當UTF8)

CONVERT(BINARY(CONVERT("’s" USING latin1)) USING utf8) - >’s

所以,你必須that's一個有趣的撇號,可能是從Microsoft Word?此外,它是「雙重編碼」。

如果你的REGEXP試圖尋找進一步的分析8位代碼,可以考慮:

HEX(col) RLIKE '^(..)*(0[BCEF]|7F|[189ABCDEF].)' 

然後,如果你想「修復」雙編碼,see my blog。讓我知道你是否需要幫助挑選你需要的部分。

+0

感謝您的回答。我明白「最後」的結局如何,但我不明白爲什麼alnum和[A-Za-z0-9]的表現不同。 – Naffi 2015-04-03 05:38:31