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

SQL Server Full Text Search - Tạo một cột được tính toán

bạn có thể sử dụng phép nối để yêu cầu khớp cả địa chỉ và tên người.

SELECT
   (keyTblSp.RANK * 3) AS [Rank],
    sp.*
FROM Employee sp    
    INNER JOIN 
        CONTAINSTABLE(Employee, *, 'John OR Hamburg', 1000) AS keyTblSp
        ON sp.EmployeeId = keyTblSp.[KEY]    
join
(
    SELECT
       (keyTbl.RANK * 2) AS [Rank],
        sp.*
    FROM Employee sp    
    LEFT OUTER JOIN [Address] addr ON addr.EmployeeId = sp.EmployeeId 
    INNER JOIN 
        CONTAINSTABLE([Address], *, 'John OR Hamburg', 1000) AS keyTbl
        ON addr.AddressId = keyTbl.[KEY]
UNION ALL
    SELECT
       (keyTbl.RANK * 2) AS [Rank],
        sp.*
    FROM Employee sp    
    LEFT OUTER JOIN [Address] addr ON addr.EmployeeId = sp.EmployeeId 
    LEFT OUTER JOIN [City] cty ON cty.CityId = addr.CityId
    INNER JOIN 
        CONTAINSTABLE([City], *, 'John OR Hamburg', 1000) AS keyTbl
        ON cty.CityId = keyTbl.[KEY]  
) addr_matches
on addr_matches.EmployeeId = sp.EmployeeId

mà tôi nghĩ sẽ cung cấp cho bạn kết quả mà bạn đã chỉ định, rõ ràng là điều này yêu cầu cả tên và cụm từ tìm kiếm địa chỉ để tìm kiếm trả về bất kỳ kết quả nào. Bạn đã không chỉ định điều gì sẽ xảy ra nếu ai đó chỉ tìm kiếm 'John', nếu bạn luôn nhận được cả tên và địa chỉ ở trên, tôi nghĩ sẽ hoạt động tốt.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Câu lệnh SQL CASE

  2. Cập nhật cột int trong bảng với các giá trị tăng dần duy nhất

  3. Tạo tất cả các kết hợp trong SQL

  4. Khung thực thể và Chế độ xem Máy chủ SQL

  5. Làm cách nào để cập nhật hai bảng trong một câu lệnh trong SQL Server 2005?