SimpleSplit
区切り文字に従って文字列を分割するTransact SQL functionがあります。次のように使用できます。
DECLARE @DelimitedString NVARCHAR(128)
SET @DelimitedString = 'Processor,RAM,SSD,Ethernet'
SELECT * FROM [dbo].[SimpleSplit](@DelimitedString, ',')
これにより、次の結果が得られます。
Processor
RAM
SSD
Ethernet
予想通り。
PROD_TABLE
column で呼び出される TableがありますDescr
。この関数を column の各値に適用したいと思いますDescr
。私は次のことを試みましたが、うまくいきません:
SELECT p.[ID], p.[Descr]
FROM [Amazon].[dbo].[PROD_TABLE] p
OUTER APPLY [dbo].[SimpleSplit](p.Descr, '-') d
出力にはID
、Descr
と列のみが表示されます。つまり、SimpleSplit
関数からの結果はありません。しかし、私がしようとすると
SELECT *
FROM [Amazon].[dbo].[PROD_TABLE] p
OUTER APPLY [dbo].[SimpleSplit](p.Descr, '-') d
SimpleSplit
最後の列に関数の結果が表示されます。このクエリでは関数が適用されるのに、前のクエリでは適用されないのはなぜですか?
答え
以下のmr.Rebands の回答のおかげで、結果に名前を付ける必要があることに気付きました。したがって、 * は機能しましたが、列に明示的に名前を付けるには、次のようにする必要がありました。
SELECT p.[ID], p.[Descr], d.[Data]
FROM [Amazon].[dbo].[PROD_TABLE] p
OUTER APPLY [dbo].[SimpleSplit](p.[Descr], '-') d