Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Bagaimana menemukan perbedaan antara dua string dalam SQL

Kedua senar harus dipisah menjadi bagian-bagiannya. Di SQL-Server 2008 ini paling baik dilakukan dengan pendekatan XML.

perhatian :Jika data Anda mungkin menyertakan karakter terlarang seperti <>öä@€& dan bukan hanya karakter latin biasa seperti pada contoh Anda, Anda perlu usaha ekstra...

Selebihnya cukup mudah:Ambil saja semua bagian @String1 yang tidak ditemukan di @String2 .

Hasil gabungan - sekali lagi - paling baik dilakukan melalui XML

Coba ini:

Declare @String1 as varchar(100)='a,b,c,d,e';

Declare @String2 as varchar(100)='b,e';

WITH FirstStringSplit(S1) AS
(
    SELECT CAST('<x>' + REPLACE(@String1,',','</x><x>') + '</x>' AS XML)
)
,SecondStringSplit(S2) AS
(
    SELECT CAST('<x>' + REPLACE(@String2,',','</x><x>') + '</x>' AS XML)
)

SELECT STUFF(
(
    SELECT ',' + part1.value('.','nvarchar(max)')
    FROM FirstStringSplit
    CROSS APPLY S1.nodes('/x') AS A(part1)
    WHERE part1.value('.','nvarchar(max)') NOT IN(SELECT B.part2.value('.','nvarchar(max)')
                                                  FROM SecondStringSplit 
                                                  CROSS APPLY S2.nodes('/x') AS B(part2)
                                                  ) 
    FOR XML PATH('')

),1,1,'')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apa cara yang tepat untuk mengisi DropDownList dari database?

  2. Impor kolom spreadsheet Excel ke database SQL Server

  3. XPath untuk mengambil nilai SQL XML

  4. Penyembunyian Data Dinamis di SQL Server untuk pemula

  5. Kesalahan SQL dengan Order By di Subquery