"T-SQL: Opposite to string concatenation - how to split string into multiple records"dbo.Split()
のようなテーブル値関数が与えられた場合、複数の行を引数として渡すにはどうすればよいですか?
これは機能します:
SELECT *
FROM dbo.Split
(',', (SELECT myColumn FROM Stuff WHERE id = 22268))
WHERE ISNULL(s,'') <> ''
戻り値:
pn s
----------- -----------
1 22351
2 22354
3 22356
4 22357
5 22360
しかし、これはしません:
SELECT *
FROM dbo.Split
(',', (SELECT myColumn FROM Stuff))
WHERE ISNULL(s,'') <> ''
これもありません:
SELECT * FROM dbo.Split_temp(',', myColumn), Stuff
ドキュメントは言う:
テーブルを返すユーザー定義関数がサブクエリの FROM 句で呼び出される場合、関数の引数は外側のクエリの列を参照できません。
私が探している結果セットの種類は次のようになります。
id pn s
----------- ----------- -----------
22268 1 22351
22268 2 22354
22268 3 22356
22268 4 22357
22268 5 22360
24104 1 22353
24104 2 22355
24104 3 22356
24104 4 22358
24104 5 22360
24104 6 22362
24104 7 22364
.
.
.
これを達成する方法はありますか (もちろん、カーソルは別として)。
(編集)
MarlonRibunal のリクエストによると、上記の結果を生成するサンプル テーブルは次のようになります。
id myColumn
----------- -------------------------------------------
22268 22351,22354,22356,22357,22360,
24104 22353,22355,22356,22358,22360,22362,22364,
id
ですint
。myColumn
ですvarchar(max)
。