我有一个 Transact SQL 函数SimpleSplit
,它根据分隔符拆分字符串。我可以按如下方式使用它:
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