加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 返回id并拆分逗号分隔值的SQL语句

发布时间:2020-12-12 07:25:50 所属栏目: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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读