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语句中包含那个列名吗?已应用“外部应用”,但未选择结果。 –
哇**先生**。感谢您的快速答复。我希望你已经把你的评论作为答案,以便我可以将其标记为这样。 –