Rumah > pangkalan data > tutorial mysql > Mengapa MySQL REGEXP Membuang \'#1139 Ralat: Operasi Operator Ulangan Tidak Sah\' dan Bagaimana Saya Boleh Membetulkannya?

Mengapa MySQL REGEXP Membuang \'#1139 Ralat: Operasi Operator Ulangan Tidak Sah\' dan Bagaimana Saya Boleh Membetulkannya?

Susan Sarandon
Lepaskan: 2024-11-23 15:25:13
asal
706 orang telah melayarinya

Why Does MySQL REGEXP Throw

#1139 Ralat: Operasi Operator Ulangan Tidak Sah dalam Ungkapan Biasa

Apabila menanyakan jadual MySQL dengan ungkapan biasa (regex) untuk memilih tertentu hasil, pengguna kadangkala menghadapi ralat "#1139 - Mendapat ralat 'pengendali pengulangan invalid' from regexp." Ralat ini menunjukkan bahawa regex yang disediakan mengandungi operan pengendali ulangan yang tidak sah.

Punca:

Ralat timbul kerana MySQL menggunakan Henry Pelaksanaan ekspresi biasa yang mematuhi POSIX Spencer. Pelaksanaan ini tidak menyokong pengkuantiti tidak tamak seperti "?," yang digunakan dalam PCRE (Perl Compatible Regular Expressions). Oleh itu, menggunakan "?," selepas "*" atau " " dalam regex akan mencetuskan ralat.

Penyelesaian:

Untuk menyelesaikan isu ini, gantikan bukan -pengkuantiti tamak "?" dengan pengkuantiti tamak "*", yang masih akan melakukan pemadanan yang diperlukan:

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

Selain itu, untuk mengelakkan padanan rentetan seperti atau

Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan