sql >> Database >  >> RDS >> Sqlserver

Zoeken in volledige tekst in SQL Server - Maak één berekende kolom

je zou een join kunnen gebruiken om een ​​match te eisen in zowel het adres als de naam van de persoon.

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

waarvan ik denk dat je de resultaten krijgt die je hebt opgegeven, maar dit vereist natuurlijk zowel een naam als een adreszoekterm voor een zoekopdracht om resultaten te retourneren. Je hebt niet aangegeven wat er gebeurt als iemand gewoon naar 'John' zoekt, als je altijd zowel een naam als een adres krijgt, werkt het bovenstaande prima denk ik.



  1. Spotlight Cloud-alarmen aanpassen

  2. MemoryError bij gebruik van de read()-methode bij het lezen van een groot JSON-bestand van Amazon S3

  3. Hoe kan ik een int casten naar een bit in MySQL 5.1?

  4. FPDF-celpositionering