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

UNTUK XML PATH dan rangkaian string

Saya pikir upaya awal Anda hampir sampai. Saya melakukan hal semacam ini sepanjang waktu menggunakan pendekatan FOR XML yang sama. Solusi di bawah ini memecahkan contoh persis Anda dan dapat dengan mudah diadaptasi untuk tujuan lain:

DECLARE @delimiter NVARCHAR(10)
SET @delimiter = ', '

declare @values TABLE (
    [value] NVARCHAR(25)
)

declare @otherValues TABLE (
    [otherValue] NVARCHAR(25)
)

INSERT INTO @values VALUES ('Value1')
INSERT INTO @values VALUES ('Value2')
INSERT INTO @values VALUES ('Value3')

INSERT INTO @otherValues VALUES ('OtherValue1')
INSERT INTO @otherValues VALUES ('OtherValue2')
INSERT INTO @otherValues VALUES ('OtherValue3')

SELECT
    STUFF(
        (
            SELECT
                @delimiter + CAST([value] AS NVARCHAR(500)) + '' AS [text()]
            FROM
                @values
            FOR   
                XML PATH('')
        ),
        1,
        LEN(REVERSE(@delimiter)), -- Reverse the delimiter string in case it has trailing spaces; LEN() won't count those
        ''
    ) +
    ' text in between my values ' +
    STUFF(
        (
            SELECT
                @delimiter + CAST([otherValue] AS NVARCHAR(500)) + '' AS [text()]
            FROM
                @otherValues
            FOR   
                XML PATH('')
        ),
        1,
        LEN(REVERSE(@delimiter)), -- Reverse the delimiter string in case it has trailing spaces; LEN() won't count those
        ''
    )


  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 saja cara mengakses Microsoft SQL Server dari Linux?

  2. Beberapa PIVOT? Perlu menghitung berdasarkan Jam Per Bulan

  3. SQL server 2008 beberapa masalah LIKE

  4. Indeks berkerumun pada kolom non-identitas untuk mempercepat penyisipan massal?

  5. SQL Server - Transaksi bersarang dalam prosedur tersimpan