Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

so sánh các giá trị được phân tách bằng dấu phẩy trong sql

Đây có phải là thứ bạn đang tìm kiếm không?

Kết quả Đúng / Sai

-- 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]

Trả lại

Item    Match
val1    0
val2    0
val3    1

Chỉ những kết quả phù hợp thực sự

-- 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]

Trả lại

Item
val3

Chức năng phân tách

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. Triển khai quan hệ một-không-một trong SQL Server

  2. Chèn hàng loạt Sql Server hàng triệu bản ghi

  3. Cách sao chép tốt hơn một tập hợp dữ liệu trong SQL Server

  4. Tập lệnh SQL để thay đổi TẤT CẢ các phím ngoại để thêm BẬT XÓA CASCADE

  5. Tại sao SQL Server 2008 Management Studio Intellisense không hoạt động?