我想做一個RegExp匹配與MySQL針對一個變量,像這樣:用正則表達式直接處理整個「單詞」?
SELECT *
FROM table
WHERE table.CONTENT
REGEXP CONCAT('([[:space:]]|[[:punct:]])', table.NAME, '([[:space:]]|[[:punct:]])')
這工作得很好,但它可能table.NAME有在它的正則表達式的特殊字符(如「|」),在這種情況下,它全部搞砸了。是否有一個正則表達式運算符會直接處理整個字符序列並忽略其中的運算符?例如,如果table.NAME是'left | right'的一行,我希望它只匹配如果table.CONTENT字面上的字符串'left | right'在其中。但除非我能夠以某種方式強制執行,否則MySQL會將其視爲運營商並查找「左」或「右」。
您是否知道REGEXP比'LIKE'慢?如果你想要更好的性能,我建議使用不涉及特殊字符的命名方案。 – 2010-09-25 00:31:06