Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Търсене на пълен текст на SQL Server - Създайте една изчислена колона

можете да използвате присъединяване, за да изисквате съвпадение както в адреса, така и в името на хората.

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

което според мен ще ви даде посочените от вас резултати, но очевидно това изисква както име, така и термин за търсене на адрес, за да може търсенето да върне резултати. Не сте уточнили какво се случва, ако някой просто търси „Джон“, ако винаги ще получавате и име, и адрес, горното ще работи добре според мен.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как трябва да работи timestamp2 на SQL Server в JDBC?

  2. Скриване на бази данни за влизане в Microsoft Sql Server 2008R2 и по-нова версия

  3. SQL Server:Тъмната страна на NVARCHAR

  4. TSQL DateDiff за връщане на броя дни с 2 знака след десетичната запетая

  5. Как да използвате SignalR в уеб ферма, като използвате Sql сървър като задна платка