我试着在mysql中使用正则表达式,它工作得很好,除了当我在我的单词中使用引号。
举例来说:
SELECT * FROM table WHERE REGEXP "^pagina's[^[:space:]]*$"
字符串
我尝试了以下所有方法:
SELECT * FROM table WHERE REGEXP "^'.preg_quote("pagina's").'[^[:space:]]*$"
型
和/或
SELECT * FROM table WHERE REGEXP "^'.addslashes("pagina's").'[^[:space:]]*$"
型
和/或
SELECT * FROM table WHERE REGEXP "^'.mysql_escape_real_string("pagina's").'[^[:space:]]*$"
型
没有运气..
它不会给予我任何结果,因为单词“pagina's”中的单引号(')。
我怎样才能转义所有的引号,这样mysql就可以看到引号的字面量并匹配数据库中的字段?
编辑
这是我的PHP代码:
$word = "pagina's";
$ary[] = "LOWER(idx.sidx_word) REGEXP '^".preg_quote($word)."[^[:space:]]*$'";
型
3条答案
按热度按时间xxe27gdn1#
您需要指定表和列名。。而且你没有正确地转义引号。试试这样的方法:
字符串
q7solyqu2#
您必须为regexp指定一个列名,并使用斜杠对引号进行转义:
字符串
vsdwdz233#
您可以交替使用单引号/双引号来匹配双引号/单引号。要匹配任何字符,请将要匹配的字符括在“[]”中。当特殊字符(例如。“[","]",“\”),在“[]”括号内加一个反斜杠作为前缀。
要解决在REGEXP匹配中同时使用单引号和双引号或匹配任何字符的问题,请根据需要使用CONCAT()和CHAR()构造正则表达式。请看下面的例子:
字符串