2

SimpleSplit区切り文字に従って文字列を分割するTransact SQL functionがあります。次のように使用できます。

 DECLARE @DelimitedString NVARCHAR(128)
 SET @DelimitedString = 'Processor,RAM,SSD,Ethernet'
 SELECT * FROM [dbo].[SimpleSplit](@DelimitedString, ',')

これにより、次の結果が得られます。

Processor
RAM
SSD
Ethernet

予想通り。

PROD_TABLEcolumn で呼び出される TableがありますDescr。この関数を column の各値に適用したいと思いますDescr。私は次のことを試みましたが、うまくいきません:

SELECT p.[ID], p.[Descr]
FROM [Amazon].[dbo].[PROD_TABLE] p
OUTER APPLY [dbo].[SimpleSplit](p.Descr, '-') d

出力にはIDDescrと列のみが表示されます。つまり、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
4

1 に答える 1