首頁  >  文章  >  資料庫  >  為什麼 MySQL REGEXP 會拋出「#1139 錯誤:重複運算子運算元無效」以及如何修復它?

為什麼 MySQL REGEXP 會拋出「#1139 錯誤:重複運算子運算元無效」以及如何修復它?

Susan Sarandon
Susan Sarandon原創
2024-11-23 15:25:13687瀏覽

Why Does MySQL REGEXP Throw

#1139 錯誤:正規表示式中的重複運算子運算元無效

使用正規表示式(regex) 查詢MySQL 表以選擇特定的結果,使用者偶爾會遇到錯誤「#1139 - Got error 'repetition-operator operand invalid' from regexp."此錯誤表示提供的正規表示式包含無效的重複運算子運算元。

原因:

出現該錯誤是因為 MySQL 使用 Henry Spencer 符合 POSIX 標準的正規表示式實現。此實作不支援 PCRE(Perl 相容正規表示式)中使用的非貪婪量詞,例如「?」。因此,在正規表示式中的“*”或“”後使用“?,”將觸發錯誤。

解決方案:

要解決此問題,請替換非- 貪婪量詞“?”使用貪婪量詞“*”,仍然會執行必要的匹配:

SELECT text
FROM `articles`
WHERE content REGEXP '.*<img[^>]*src="http://www'
ORDER BY date DESC

此外,避免匹配諸如為什麼 MySQL REGEXP 會拋出「#1139 錯誤:重複運算子運算元無效」以及如何修復它?

'<img[^>]*src="http://www'

注意雙引號不需要轉義,開頭的 .* 是隱含的。透過仔細使用貪婪量詞和否定字元類,您可以有效地從 MySQL 表中選擇所需的結果,而不會觸發「重複運算子運算元無效」錯誤。

以上是為什麼 MySQL REGEXP 會拋出「#1139 錯誤:重複運算子運算元無效」以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn