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

Anagrammer kata dengan % sql

Pertama saya ingin memperbaiki kesalahan dalam pertanyaan Anda. Dalam pertanyaan Anda, maksud Anda _ bukan % . % berarti sejumlah karakter (nol atau lebih). Gunakan _ berarti tepat satu karakter.

Sekarang ke solusinya... Anda sebenarnya tidak perlu kata yang diurutkan disimpan dalam database. Anda bisa melakukan ini:

SELECT word
FROM dictionary
WHERE CHAR_LENGTH(word) = 6
AND word LIKE '%W%'
AND word LIKE '%O%'
AND word LIKE '%R%'
AND word LIKE '%D%'

Jika Anda memiliki surat duplikat di input Anda, perlu menangani ini dengan benar untuk memastikan bahwa semua hasil berisi semua surat duplikat. Misalnya jika inputnya adalah FOO__ anda perlu memeriksa bahwa setiap kata cocok dengan keduanya %F% dan %O%O% .

SELECT word
FROM dictionary
WHERE CHAR_LENGTH(word) = 5
AND word LIKE '%F%'
AND word LIKE '%O%O%'

Perhatikan bahwa pendekatan ini akan memerlukan pemindaian penuh tabel sehingga tidak akan terlalu efisien. Anda dapat sedikit memperbaikinya dengan menyimpan panjang setiap kata di kolom terpisah dan mengindeks kolom itu.

Jika Anda memiliki sortedword maka Anda dapat meningkatkan kinerja dengan menghilangkan % antara huruf yang digandakan karena Anda tahu bahwa mereka akan muncul secara berurutan di sortedword . Ini dapat meningkatkan kinerja karena mengurangi jumlah pelacakan balik yang diperlukan untuk kecocokan yang gagal.

SELECT word
FROM dictionary
WHERE CHAR_LENGTH(word) = 5
AND sortedword LIKE '%F%'
AND sortedword LIKE '%OO%'

Pendekatan lain yang membutuhkan sortedword untuk hadir adalah sebagai berikut:

SELECT word
FROM dictionary
WHERE CHAR_LENGTH(word) = 5
AND sortedword LIKE '%D%O%R%W%'

Sekali lagi ini membutuhkan pemindaian penuh tabel. Sekali lagi, jika Anda memiliki huruf yang berulang, Anda tidak memerlukan % di antara mereka.

SELECT word
FROM dictionary
WHERE CHAR_LENGTH(word) = 5
AND sortedword LIKE '%F%OO%'



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara terbaik untuk menghindari entri duplikat ke database mysql

  2. bagaimana cara memilih semua kolom tanpa kunci UTAMA di mysql?

  3. CSV ke skrip impor Mysql untuk mencocokkan bidang

  4. Apa yang lebih efisien - menyimpan log dalam database atau file sql?

  5. MySQL INSERT SELECT - Duplikat baris