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 に答える