sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server Full Text Search - Skapa en beräknad kolumn

du kan använda en join för att kräva en matchning i både adressen och personens namn.

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

vilket jag tror skulle ge dig de resultat du angav, men detta kräver uppenbarligen både ett namn och en adresssökterm för att en sökning ska kunna ge resultat. Du angav inte vad som händer om någon bara söker på 'John', om du alltid får både namn och adress kommer ovanstående att fungera bra tror jag.



  1. Sammanfoga två bord med skick - rubin på skenor

  2. De bästa AWR-användbara frågorna för R12.2/R12.1-uppgradering

  3. Kombinationer från en enda tabell, grupperade efter ett kolumnvärde

  4. Python2.7 MySQL-anslutningsfel vid LOAD DATA LOCAL INFILE