0
我有一個Transact SQL函數SimpleSplit
,它根據分隔符分割字符串。將SQL函數應用於表列值
DECLARE @DelimitedString NVARCHAR(128)
SET @DelimitedString = 'Processor,RAM,SSD,Ethernet'
SELECT * FROM [dbo].[SimpleSplit](@DelimitedString, ',')
這導致:
Processor
RAM
SSD
Ethernet
正如預期的那樣,我可以按如下方式使用它。
我現在有一個名爲PROD_TABLE
的表,其列Descr
。我想將這個函數應用於列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
你的函數返回一個表 - SimpleSplit結果表的列名是什麼?你不需要在你的select語句中包含那個列名嗎?已應用「外部應用」,但未選擇結果。 –
哇**先生**。感謝您的快速答覆。我希望你已經把你的評論作爲答案,以便我可以將其標記爲這樣。 –