カンマ区切りの値を文字列として格納するフィールドを持つテーブルがあります。別のテーブルの複数の行から、ある行のその文字列にさらに値を追加したいと思います。以下に例を示します。
COALESCE()が機能することを頭に入れて、そのトリックを使用して変数をロードする方法を考えていますが、カーソルを使用して必要なすべての値を収集する必要があると思いますt1の各行、そして私は本当にカーソルを避けたいです。このテーブルのデザインは私が受け継いだ混乱であり、どこでもカーソルを使って処理することで悪化させないようにしたいと思います。
CREATE Table t1(
StringColumn VARCHAR(10)
)
CREATE Table T2(
TestString VARCHAR(10),
ConcatString VARCHAR(10)
)
INSERT INTO t1(StringColumn) VALUES('1,2,3')
INSERT INTO T2(TestString,ConcatString) VALUES('2','4')
INSERT INTO T2(TestString,ConcatString) VALUES('2','5')
INSERT INTO T2(TestString,ConcatString) VALUES('2','6')
INSERT INTO t1(StringColumn) VALUES('A,B,C')
INSERT INTO T2(TestString,ConcatString) VALUES('A','D')
INSERT INTO T2(TestString,ConcatString) VALUES('B','E')
INSERT INTO T2(TestString,ConcatString) VALUES('B','F')
Begin Tran --Commit Rollback
UPDATE t1
Set t1.StringColumn = t1.StringColumn + ',' + t2.ConcatString
FROM t1
INNER JOIN t2 ON charindex(t2.TestString,t1.StringColumn) <> 0
SELECT * FROM t1
この例によると、結果は次のとおりです。
1,2,3,4
あいうえお
t1の2つの行を次のようにしたいと思います。
1,2,3,4,5,6
A、B、C、D、E、F
ありがとう。何かアドバイスをいただければ幸いです。