[英]Mysql request () doesn't work after 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[<.:, ]' ''
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
放置()的目的是將所有其他OR與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請求相對應。
您是否嘗試過在最后一個)之后刪除這些看似多余的文件?
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.