Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pencarian Ekspresi Reguler Mysql tanpa karakter berulang

Karena MySQL tidak mendukung grup pengambilan referensi-balik, solusi tipikal (\w).*\1 tidak akan berfungsi. Ini berarti bahwa setiap solusi yang diberikan perlu menghitung semua kemungkinan ganda. Selain itu, sejauh yang saya tahu, referensi balik tidak valid dalam tampilan depan atau belakang, dan tampilan depan dan belakang tidak didukung di MySQL.

Namun, Anda dapat membaginya menjadi dua ekspresi, dan menggunakan kueri berikut:

SELECT * FROM words
WHERE word REGEXP '^[SEPIAN]{1,6}$'
AND NOT word REGEXP 'S.*?S|E.*?E|P.*?P|I.*?I|A.*?A|N.*?N'

Tidak terlalu cantik, tetapi berfungsi dan juga harus cukup efisien.

Untuk mendukung batas karakter yang diulang, gunakan pola berikut untuk ekspresi sekunder Anda:

A(.*?A){X,}

Dimana A adalah karakter Anda dan X adalah berapa kali diizinkan.

Jadi jika Anda menambahkan N lainnya ke string Anda SEPIANN (untuk total 2 N s), kueri Anda akan menjadi:

SELECT * FROM words
WHERE word REGEXP '^[SEPIAN]{1,7}$'
AND NOT word REGEXP 'S.*?S|E.*?E|P.*?P|I.*?I|A.*?A|N(.*?N){2}'


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pembulatan MySQL Hingga 5 Sen Terdekat

  2. Cara menginstal dan mengkonfigurasi MySQL di Ubuntu

  3. Perbedaan MySQL dan SQL Server

  4. Kode Kesalahan MySQL 1452 Batasan Kunci Asing

  5. Membuat tampilan MySQL dengan kolom id yang bertambah secara otomatis