sql >> Databáze >  >> RDS >> Sqlserver

Dotaz pro získání společných slov mezi dvěma řetězci

Název vaší otázky říká MSQL, takže vaši otázku beru jako otázku serveru SQL.

  1. Funkce rozdělení

V závislosti na verzi serveru SQL/konfiguraci serveru budete potřebovat funkci rozdělení, která dokáže rozdělit řetězec na vybraný oddělovač. Zde je taková funkce.

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. Dotaz na běžná slova pomocí funkce rozdělení (existuje několik způsobů, jak to udělat, zde je jeden). 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



  1. Algoritmus, aby se zabránilo vkládání SQL na MSSQL Server z kódu C#?

  2. Migrace Laravel:Odstraňte onDelete('cascade') z existujícího cizího klíče

  3. BULK INSERT se sloupcem identity (automatické zvýšení).

  4. Co zamyká | prostředky komunikační vyrovnávací paměti znamenají?