SQL正则表达式中的特殊字符 - 与特殊字符匹配字边界
我有一个创建查询的搜索函数。我的目标是搜索确切的单词,所以如果短语是'hello',它应该只返回'hello'的结果(而不是'xhello','helloxx'等)。我的代码如下所示:SQL正则表达式中的特殊字符 - 与特殊字符匹配字边界
SELECT (...) WHERE x RLIKE '[[:<:]]word[[:>:]]'
而且它适用于大多数的情况下,但是当这句话是F.E. 问题开始'$ hello'或'hello'等 - 特殊字符破坏了功能。
有没有办法处理它?
尝试
SELECT * FROM table WHERE x RLIKE '(^|[[:space:]])Hello([[:space:]]|$)'
或
SELECT * FROM table WHERE x RLIKE '(^|)Hello(|$)'
或
SELECT * FROM table WHERE x REGEXP '(^|[[:space:]])Hello([[:space:]]|$)'
或
SELECT * FROM test WHERE name REGEXP '(^|)Hello(|$)'
OP已经声明那些[“不工作”](http://stackoverflow.com/questions/38739216/special-chars-in-sql-regex#comment64853436_38739216)。 –
rlike和正则表达式之间的区别是什么? – user6671488
两者都是一样的。请参阅[正则表达式](http://dev.mysql.com/doc/refman/5.7/en/regexp.html) – zakhefron
您可以检查这个词的应用耳朵在字符串的开始/结尾,如果它被空格包围:'RLIKE'(^ | [[:space:]])字([[:space:]] | $)'' –
Wiktor - 不工作 – user6671488
它怎么不“工作”?请参阅https://regex101.com/r/dX5aV9/1。这是工作*。 –