sql >> Base de Datos >  >> RDS >> Sqlserver

Consulta para obtener palabras comunes entre dos cadenas

El título de su pregunta dice MSQL, así que estoy tomando su pregunta como una pregunta del servidor Sql.

  1. Función de división

Según la versión de SQL Server/Configuración del servidor, necesitará una función de división que pueda dividir una cadena en un delimitador de su elección. Aquí hay una función de este tipo.

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. Consulte palabras comunes usando la función de división (hay bastantes maneras de hacer esto, aquí hay una). 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