,当我有这样的要求:Mysql的请求()后不工作,
SELECT fr,text_id FROM texts
WHERE (
fr REGEXP '[>.:, ]le[<.:, ]' OR fr REGEXP '^le[[:space:]]?'
OR fr REGEXP '[[:space:]]le[[:space:]]?$'
) AND fr REGEXP '[>.:, ]la[<.:, ]' ''
ORDER BY text_id DESC LIMIT 0, 20
它的工作原理
但是,当我把()它不工作:
SELECT fr,text_id FROM texts
WHERE (
fr REGEXP '[>.:, ]le[<.:, ]' OR fr REGEXP '^le[[:space:]]?'
OR fr REGEXP '[[:space:]]le[[:space:]]?$'
) AND (fr REGEXP '[>.:, ]la[<.:, ]') ''
ORDER BY text_id DESC LIMIT 0, 20
把()放在所有其他位置或与AND一起,所以请求只显示搜索到的所有文字类型出现在文本中的结果。和其他字符
所以最好这应该工作:
SELECT fr,text_id FROM texts
WHERE (
fr REGEXP '[>.:, ]le[<.:, ]'
OR fr REGEXP '^le[[:space:]]?'
OR fr REGEXP '[[:space:]]le[[:space:]]?$'
) AND (
fr REGEXP '[>.:, ]la[<.:, ]'
OR fr REGEXP '^la[[:space:]]?'
) OR fr REGEXP '[[:space:]]la[[:space:]]?$'
) '' ORDER BY text_id DESC LIMIT 0, 20
如果可能帮助我用这个循环将文字量:
for($i=0;$i<$wordsLenght;$i++)
{
if($i !== 0)
{
$recherche .= ")AND (".$lang." REGEXP '[>.:, ]".$words[$i]."[<.:, ]') ";
}
else
{
if($wordsLenght == 1)
{
$recherche = "".$lang." REGEXP '[>.:, ]".$words[0]."[<.:, ]' OR (".$lang."
REGEXP '^".$words[0]."[[:space:]]?') OR ".$lang." REGEXP
'[[:space:]]".$words[0]."[[:space:]]?$'";
}
else
{
$recherche = "(".$lang." REGEXP '[>.:, ]".$words[0]."[<.:, ]' OR ".$lang."
REGEXP '^".$words[0]."[[:space:]]?' OR ".$lang." REGEXP
'[[:space:]]".$words[0]."[[:space:]]?$'";
}
}
}
这是在用作功能在另一个函数中的一个参数,它的一部分对应WHERE之后的mysql请求。
你希望用这些空的''''做什么? – Wrikken 2014-10-29 16:08:39
尝试SELECT fr,text_id FROM texts WHERE(fr REGEXP'[>。:,] le [<。:,''或fr REGEXP'^ le [[:space:]]?'或fr REGEXP'[[:space :]] le [[:space:]]?$''AND(fr REGEXP'[>。:,] la [<。:,]')''ORDER BY text_id DESC LIMIT 0,20 – Abhijeet 2014-10-29 16:09:03
does not work ... – user3595784 2014-10-29 16:17:30