1

MSSQL テーブル (「ユーザー名」) には、次の 2 つのレコードがあります。

name   ¦  nickname
John      Johny
Marc      Marco

John と Marc のニックネームを k とすると、"Johny, Marco" を返すクエリを実行したいと考えています。

私は次のことを試しました:

declare @consolidatedNicknames varchar(2000)
set @consolidatedNicknames = ''
select @consolidatedNicknames = @consolidatedNicknames + nickname + ';'
From username WHERE name IN ('John','Marc')

しかし、「ジョン」というニックネームしか返されません。

'John' と 'Marc' のニックネームをどのように連結できますか?

どうもありがとう。

4

2 に答える 2

0

あなたのサンプルコードは私にとって期待どおりに機能しました。大きな文字列 (50k 文字以上) を使用するこのメソッドには、いくつかの問題がありました。これは、もう少し堅牢であることがわかった別のバージョンです。

DECLARE @consolidatedNicknames varchar(2000)
SET @consolidatedNicknames = ''

SELECT @consolidatedNicknames = 
        STUFF((SELECT ', ' + username.nickname
                FROM username
                WHERE name IN ('John','Marc')
                FOR XML PATH(''),TYPE).value('.','VARCHAR(MAX)')
            , 1, 2, '')
于 2013-06-05T14:38:08.507 に答える