Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Temukan catatan sql yang berisi string serupa

Jika Anda benar-benar ingin mendefinisikan kesamaan dengan cara yang persis seperti yang telah Anda rumuskan dalam pertanyaan Anda, maka Anda - seperti yang Anda katakan - harus menerapkan perhitungan Levensthein Distance. Baik dalam kode yang dihitung pada setiap baris yang diambil oleh DataReader atau sebagai fungsi SQL Server.

Masalah yang disebutkan sebenarnya lebih rumit daripada yang terlihat pada pandangan pertama, karena Anda tidak dapat berasumsi untuk mengetahui apa yang saling berbagi elemen antara dua string mungkin.

Jadi selain Levensthein Distance Anda mungkin juga ingin menentukan jumlah minimum karakter berurutan yang benar-benar harus cocok (agar kesamaan yang memadai dapat disimpulkan).

Singkatnya:Kedengarannya seperti pendekatan yang terlalu rumit dan memakan waktu/lambat.

Menariknya, di SQL Server 2008 Anda memiliki fungsi PERBEDAAN yang mungkin digunakan untuk hal seperti ini.

Ini mengevaluasi nilai fonetik dari dua string dan menghitung perbedaannya. Saya tidak yakin apakah Anda akan membuatnya berfungsi dengan baik untuk ekspresi multi-kata seperti judul film karena tidak cocok dengan spasi atau angka dan terlalu menekankan awal string, tetapi ini masih menarik predikat yang harus diperhatikan.

Jika Anda sebenarnya mencoba menjelaskan adalah semacam fitur pencarian, maka Anda harus melihat ke dalam kemampuan Pencarian Teks Lengkap dari SQL Server 2008. Ini menyediakan dukungan Tesaurus bawaan, predikat SQL mewah dan mekanisme peringkat untuk "kecocokan terbaik"

EDIT:Jika Anda ingin menghilangkan duplikat, mungkin Anda bisa melihat SSIS Fuzzy Lookup dan Fuzzy Group Transformation. Saya sendiri belum mencobanya, tetapi sepertinya ini adalah petunjuk yang menjanjikan.

EDIT2:Jika Anda tidak ingin menggali SSIS dan masih kesulitan dengan kinerja algoritme Levensthein Distance, Anda mungkin dapat mencoba algoritme ini yang tampaknya tidak terlalu rumit.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Setel ulang benih identitas setelah menghapus catatan di SQL Server

  2. ABS() Contoh di SQL Server

  3. Ubah Format Tanggal Untuk Sesi Saat Ini di SQL Server

  4. Cara Mendapatkan Tanggal Saat Ini di SQL Server

  5. SQL Server 2016:Memulihkan Database