Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Query per ottenere parole comuni tra due stringhe

Il titolo della tua domanda dice MSQL, quindi prendo la tua domanda come una domanda di SQL Server.

  1. Funzione di divisione

A seconda della versione di SQL Server/Configurazione del server, avrai bisogno di una funzione di suddivisione in grado di dividere una stringa su un delimitatore a scelta. Ecco una tale funzione.

CREATE FUNCTION [dbo].[fnSplit](@data NVARCHAR(MAX), @delimiter NVARCHAR(5))
RETURNS @t TABLE (rowNum int IDENTITY(1,1), data NVARCHAR(max), descriptor varchar(255) NULL)
AS
BEGIN

    DECLARE @textXML XML;
    SELECT    @textXML = CAST('<d>' + REPLACE(@data, @delimiter, '</d><d>') + '</d>' AS XML);

    INSERT INTO @t(data)
    SELECT  RTRIM(LTRIM(T.split.value('.', 'nvarchar(max)'))) AS data
    FROM    @textXML.nodes('/d') T(split)

    RETURN
END
  1. Ricerca parole comuni usando la funzione split (ci sono diversi modi per farlo, eccone uno). SELECT sentence1.data FROM dbo.fnSplit('This site is very helpful',' ') sentence1 INNER JOIN dbo.fnSplit('I need a helpful site',' ') sentence2 ON sentence1.data = sentence2.data