SQLServerで複数件の検索結果を1行のカンマ区切り(CSV)で文字列取得する
Where句のINにSQLで取得した結果を直接利用したりするのに、複数件存在するデータを1行のカンマ区切りデータとして取得することができる。
カンマ区切りで取得するには列名を「data()」にすることでアトミック値として処理し、その結果を「FOR XML PATH」を利用して細工する。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | CREATE TABLE test_table ( no SMALLINT ,name VARCHAR(20) ) INSERT INTO test_table VALUES( 1,'太郎さん' ) INSERT INTO test_table VALUES( 2,'次郎さん' ) INSERT INTO test_table VALUES( 3,'三郎さん' ) SELECT REPLACE( ( SELECT name AS [data()] FROM test_table FOR XML PATH ('')), ' ', ',') AS RESULT |