Rumah > Artikel > pangkalan data > Mengapa MySQL REGEXP Membuang \'#1139 Ralat: Operasi Operator Ulangan Tidak Sah\' dan Bagaimana Saya Boleh Membetulkannya?
#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
Selain itu, untuk mengelakkan padanan rentetan seperti atau