2

次のクエリを使用して行を列に変換しています

SELECT STUFF((SELECT NAME + ',' FROM TABLE1
FOR XML PATH('')),1,0,'') AS [ACCOUNT NAMES]

テーブルには次のデータがあります

NAME 
-------------------
GURPREET & CO.
SIMRAN TRADERS
LABOUR & WELFARE
-------------------

私は次のような出力が欲しい

GURPREET&CO。、SIMRAN TRADERS、LABOR&WELFARE、

しかし、SQLは出力を与えられました

GURPREET&amp CO。、SIMRAN TRADERS、LABOR&amp WELFARE、

どうすれば削除できますか?

4

1 に答える 1

7

例では最後のコンマを保持しているので、特に操作なしのパラメーターでSTUFFを使用している場合は、STUFFは必要ありません,1,0,''

SELECT
    (SELECT NAME + ','
       FROM TABLE1
        FOR XML PATH(''),type).value('.','nvarchar(max)') AS [ACCOUNT NAMES]

最後のコンマを削除したい場合は、次のようになります。

SELECT STUFF(
    (SELECT ',' + NAME
       FROM TABLE1
        FOR XML PATH(''),type).value('.','nvarchar(max)'),1,1,'') AS [ACCOUNT NAMES]

注:問題は、インターネットとほぼ同じくらい古い一般的なパターンを使用していることです。これは、XMLの誘惑を考慮していません。指定子を使用すると、FOR XML TYPEを介して再度抽出されたときに元のテキストが保持されます.value, varchar(max)

于 2012-11-15T05:24:15.770 に答える