Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

porównaj wartości oddzielone przecinkami w sql

Czy tego właśnie szukasz?

Prawdziwe/fałszywe wyniki

-- matches only those values which exist in both CSV sets
SELECT T1.[Item], CASE  WHEN T2.[Item] IS NULL THEN 0 ELSE 1 END AS [Match] 
FROM [dbo].[Split]('val1,val2,val3', ',') AS T1
    LEFT JOIN [dbo].[Split]('val3,val4', ',') AS T2 on T1.[Item] = T2.[Item]

Zwroty

Item    Match
val1    0
val2    0
val3    1

Tylko prawdziwe dopasowania

-- matches only those values which exist in both CSV sets
SELECT T1.[Item] 
FROM [dbo].[Split]('val1,val2,val3', ',') AS T1
    INNER JOIN [dbo].[Split]('val3,val4', ',') AS T2 on T1.[Item] = T2.[Item]

Zwroty

Item
val3

Funkcja podziału

CREATE FUNCTION [dbo].[Split] 
(   
    @s VARCHAR(max),
    @split CHAR(1)
)
RETURNS @temptable TABLE ([Item] VARCHAR(MAX))    
AS
BEGIN
    DECLARE @x XML

    SELECT @x = CONVERT(xml,'<root><s>' + REPLACE(@s,@split,'</s><s>') + '</s></root>');

    INSERT INTO @temptable          
    SELECT [Value] = T.c.value('.','varchar(20)')
    FROM @X.nodes('/root/s') T(c);
RETURN
END;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapomniałem dodać kolumnę klucza podstawowego jako tożsamość

  2. Funkcje a procedury składowane

  3. Jak używać SQL Server Compact Edition (CE) z Javy?

  4. Wybierz niepuste kolumny za pomocą SQL Server

  5. SQL Server:Jak pogrupować wartości wielu wierszy w oddzielne kolumny?