sql-server – 返回id并拆分逗号分隔值的SQL语句
发布时间:2020-05-24 04:33:43 所属栏目:MsSql 来源:互联网
导读:我有一个包含以下数据的表: NodeId ExternalIds50 60156 700,701 如何编写分割ExternalIds-column并返回的SQL语句: NodeId ExternalIds50 60156 70056 701 我发现了很多用户定义的函数和过程,它们将一个字符串拆分成一个表,但我无法让它们中的任何一个工作
|
我有一个包含以下数据的表: NodeId ExternalIds 50 601 56 700,701 如何编写分割ExternalIds-column并返回的SQL语句: NodeId ExternalIds 50 601 56 700 56 701 我发现了很多用户定义的函数和过程,它们将一个字符串拆分成一个表,但我无法让它们中的任何一个工作 编辑 create table #tmpTable (NodeId int,ExternalIds varchar(50)) insert into #tmpTable (NodeId,ExternalIds) values (50,'600') insert into #tmpTable (NodeId,ExternalIds) values (56,'700,701') select NodeId,(SELECT * FROM [dbo].[SplitString](select * from #tmpTable,',') where NodeId=56)from #tmpTable) where NodeId=56 drop table #tmpTable 其中SplitString基于以下内容:
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
Create FUNCTION [dbo].[SplitString]
(
-- Add the parameters for the function here
@myString varchar(500),@deliminator varchar(10)
)
RETURNS
@ReturnTable TABLE
(
-- Add the column definitions for the TABLE variable here
[id] [int] IDENTITY(1,1) NOT NULL,[part] [varchar](50) NULL
)
AS
BEGIN
Declare @iSpaces int
Declare @part varchar(50)
--initialize spaces
Select @iSpaces = charindex(@deliminator,@myString,0)
While @iSpaces > 0
Begin
Select @part = substring(@myString,charindex(@deliminator,0))
Insert Into @ReturnTable(part)
Select @part
Select @myString = substring(@mystring,0)+ len(@deliminator),len(@myString) - charindex(' ',0))
Select @iSpaces = charindex(@deliminator,0)
end
If len(@myString) > 0
Insert Into @ReturnTable
Select @myString
RETURN
END
我试图从数据库中获取Umbraco(cms)的一些数据,这些数据是用逗号分隔的值设计的. 谢谢 解决方法select NodeId,S.part from #tmpTable cross apply [dbo].[SplitString](ExternalIds,') as S (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
