1

我尝试在 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:]]*$'";
4

2 回答 2

0

您需要指定一个表和一个列名......并且您没有正确地转义引号。尝试这样的事情:

SELECT *
FROM table
WHERE column REGEXP '^pagina''s[^[:space:]]*$';
于 2012-08-15T21:14:33.147 回答
0

您必须为正则表达式指定一个列名并用斜杠转义引号:

SELECT *
FROM table
WHERE column REGEXP '^pagina\'s[^[:space:]]*$';
于 2012-08-16T06:40:50.950 回答