1

2つのテーブルがTableAありTableBます。

  • TableAItemAas NVARCHAR(MAX)="1234,1235,1253,1643,2374" 。
  • TableBItemBとして持っていINT(MAX)ます。

STRING必要なのは、 fromからTableAtoを渡し、TableB各要素を新しい行に挿入することです。

STRINGカンマ区切りを繰り返す代わりに、これを行うためのより迅速な方法はありますか?

配列またはリストとして渡しますが、それはできません。

4

1 に答える 1

0

CTE を使用すると、次のように動作するはずです。

スキーマ

CREATE TABLE tbl1 (
  ItemA nvarchar(max))

INSERT INTO tbl1 VALUES ('1234,1235,1253,1643,2374')

クエリ

;WITH tmp(Item, ItemA) as (
    SELECT LEFT(ItemA, CHARINDEX(',',ItemA+',')-1),
        STUFF(ItemA, 1, CHARINDEX(',',ItemA+','), '')
    FROM tbl1
    UNION ALL
    SELECT LEFT(ItemA, CHARINDEX(',',ItemA+',')-1),
        STUFF(ItemA, 1, CHARINDEX(',',ItemA+','), '')
    FROM tmp
    WHERE ItemA > ''
)
INSERT INTO TableB (ItemB) SELECT Item FROM tmp

フィドル

于 2012-09-07T01:02:33.157 に答える