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

SQL Pilih Seperti Kata Kunci dalam Urutan Apa Pun

Sepertinya Anda benar-benar mencari pencarian teks lengkap, terutama karena Anda ingin menimbang kata-kata.

Untuk menggunakan LIKE , Anda harus menggunakan beberapa ekspresi (satu per kata, per kolom), yang berarti SQL dinamis. Saya tidak tahu bahasa apa yang Anda gunakan, jadi saya tidak dapat memberikan contoh, tetapi Anda harus membuat pernyataan seperti ini:

Untuk "Hula Hoop":

where (ProductName like '%hula%' or ProductName like '%hoops%')
  and (Description like '%hula%' or Description like '%hoops%')
  and (ShortName like '%hula%' or ShortName like '%hoops%')

dll.

Sayangnya, itu benar-benar satu-satunya cara untuk melakukannya. Menggunakan Pencarian Teks Lengkap akan memungkinkan Anda mengurangi kriteria menjadi satu kriteria per kolom, tetapi Anda masih harus menentukan kolom secara eksplisit.

Karena Anda menggunakan SQL Server, saya akan menebak bahwa ini adalah pertanyaan C#. Anda harus melakukan sesuatu seperti ini (dengan asumsi Anda sedang membangun SqlCommand atau DbCommand keberatan sendiri; jika Anda menggunakan ORM, semua taruhan dibatalkan dan Anda mungkin tidak akan menanyakan hal ini):

SqlCommand command = new SqlCommand();
int paramCount = 0;

string searchTerms = "Hula Hoops";

string commandPrefix = @"select *

from Products";

StringBuilder whereBuilder = new StringBuilder();

foreach(string term in searchTerms.Split(' '))
{
    if(whereBuilder.Length == 0)
    {
        whereBuilder.Append(" where ");
    }
    else
    {
        whereBuilder.Append(" and ");
    }

    paramCount++;

    SqlParameter param = new SqlParameter(string.Format("param{0}",paramCount), "%" + term + "%");

    command.Parameters.Add(param);

    whereBuilder.AppendFormat("(ProductName like @param{0} or Description like @param{0} or ShortName like @param{0})",paramCount);
}

command.CommandText = commandPrefix + whereBuilder.ToString();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hapus karakter non-numerik dari string

  2. WHERE IN (SELECT NonExistingColumnName) menyebabkan perilaku tak terduga

  3. PILIH UNTUK PEMBARUAN dengan SQL Server

  4. TFS dan PROYEK DATABASE (SQL Server)

  5. NOT IN (subquery) menghasilkan baris nol