SQL中的管道内联分离
嗨,我在执行查询时有以下数据 我也有一个函数,它将管道seprate column ReportType,但它正在写入我的列 我想要以下格式的结果SQL中的管道内联分离,sql,sql-server,Sql,Sql Server,嗨,我在执行查询时有以下数据 我也有一个函数,它将管道seprate column ReportType,但它正在写入我的列 我想要以下格式的结果 ItemID |ReportType|EmailAddrress |FirstName|LastName 1 | 1 |abc@gmail.com| test |test 1 | 2 |abc@gmail.com| test1 |test1 我的SQL函数似乎没有用 我的职能是 ALT
ItemID |ReportType|EmailAddrress |FirstName|LastName
1 | 1 |abc@gmail.com| test |test
1 | 2 |abc@gmail.com| test1 |test1
我的SQL函数似乎没有用
我的职能是
ALTER FUNCTION [dbo].[fnSplit](
@sInputList VARCHAR(8000) -- List of delimited items
, @sDelimiter VARCHAR(8000) = '|' -- delimiter that separates items
) RETURNS @List TABLE (item VARCHAR(8000))
BEGIN
DECLARE @sItem VARCHAR(8000)
WHILE CHARINDEX(@sDelimiter,@sInputList,0) <> 0
BEGIN
SELECT
@sItem=RTRIM(LTRIM(SUBSTRING(@sInputList,1,CHARINDEX(@sDelimiter,@sInputList,0)-1))),
@sInputList=RTRIM(LTRIM(SUBSTRING(@sInputList,CHARINDEX(@sDelimiter,@sInputList,0)+LEN(@sDelimiter),LEN(@sInputList))))
IF LEN(@sItem) > 0
INSERT INTO @List SELECT @sItem
END
IF LEN(@sInputList) > 0
INSERT INTO @List SELECT @sInputList -- Put the last item in
RETURN
END
选择是正常查询
选择ItemId、ReportType、EmailAddress、FirstName、LastName
从EmailInfo如果我正确理解了您的问题,那么我认为这就是您想要实现的目标
SELECT ItemId, col.item AS ReportType, EmailAddress, FirstName, LastName
FROM EmailInfo
CROSS APPLY dbo.fnSplit(ReportType, '|') col
我认为应该是col.item作为报告类型,但这似乎是OP想要的。@PushkarPhule:很高兴帮助你。