Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

SQL Chọn Từ khóa Giống như trong Bất kỳ Thứ tự nào

Có vẻ như bạn đang thực sự tìm kiếm toàn văn, đặc biệt là khi bạn muốn cân nhắc các từ.

Để sử dụng LIKE , bạn sẽ phải sử dụng nhiều biểu thức (một biểu thức trên mỗi từ, trên mỗi cột), có nghĩa là SQL động. Tôi không biết bạn đang sử dụng ngôn ngữ nào, vì vậy tôi không thể cung cấp ví dụ, nhưng bạn sẽ phải đưa ra một tuyên bố như sau:

Đối với "Hula Hoops":

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

vv

Thật không may, đó thực sự là cách duy nhất để làm điều đó. Sử dụng Tìm kiếm toàn văn bản sẽ cho phép bạn giảm tiêu chí của mình xuống còn một tiêu chí cho mỗi cột, nhưng bạn vẫn phải chỉ định các cột một cách rõ ràng.

Vì bạn đang sử dụng SQL Server nên tôi sẽ đánh giá cao rằng đây là một câu hỏi C #. Bạn phải làm điều gì đó như thế này (giả sử bạn đang xây dựng SqlCommand hoặc DbCommand phản đối bản thân; nếu bạn đang sử dụng ORM, tất cả các cược đều tắt và bạn có thể sẽ không hỏi điều này bằng cách nào):

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. Chênh lệch thời gian SQL giữa hai ngày dẫn đến hh:mm:ss

  2. Câu lệnh SQL Server CASE .. WHEN .. IN

  3. Công dụng của SYNONYM là gì?

  4. Tạo quy tắc để hạn chế các ký tự đặc biệt trong bảng trong máy chủ sql

  5. Cài đặt phiên để hỗ trợ các chế độ xem được lập chỉ mục