Sql Server 列转逗号隔开的字符串 和 逆转

Posted 秋明小司机丶

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sql Server 列转逗号隔开的字符串 和 逆转相关的知识,希望对你有一定的参考价值。

SELECT  STUFF(( SELECT  \',\' + ModifyBy
                FROM    dbo.tbl_stationprofile
              FOR
                XML PATH(\'\')
              ), 1, 1, \'\') AS Name    

 

 

逗号隔开的字符串转表

USE [MBG3SDB]
GO
/****** Object:  UserDefinedFunction [dbo].[GetIDList]    Script Date: 2017/9/12 10:13:38 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

-- =============================================
-- Description:    将字符串转换为列表(@InStr:字符串,@sp:分隔符)
-- =============================================
ALTER FUNCTION [dbo].[GetIDList](@InStr VARCHAR(max)=\'\',@sp CHAR(1)=\',\')
RETURNS @TempTable TABLE ([ID] VARCHAR(50)) 
AS
BEGIN
    IF @InStr IS NULL OR rtrim(ltrim(@InStr))=\'\'
        RETURN
    DECLARE @FirstID VARCHAR(50),@SpIndex int 
    IF(@sp IS NULL OR @sp=\'\')
        SET @sp=\',\'
    WHILE @InStr<>\'\'
    BEGIN
        SET @SpIndex=CHARINDEX(@sp,@InStr)
        IF(@SpIndex=1)
        BEGIN
            SET @InStr=SUBSTRING(@InStr,2,DATALENGTH(@InStr))
            CONTINUE
        END
        ELSE IF(@SpIndex>1)
        BEGIN
            SET @FirstID=SUBSTRING(@InStr,1,@SpIndex-1)
            SET @InStr=SUBSTRING(@InStr,@SpIndex+1,DATALENGTH(@InStr)-@SpIndex+1)
        END
        ELSE
        BEGIN
            SET @FirstID=@InStr
            SET @InStr=\'\'
        END
        INSERT INTO @TempTable SELECT @FirstID
    END
    RETURN
END
/**
示例
select * from dbo.GetIDList(\'5#6#7\',\'#\')
**/

 

自己创建表函数自己试吧。下面就不上图了。

 

以上是关于Sql Server 列转逗号隔开的字符串 和 逆转的主要内容,如果未能解决你的问题,请参考以下文章

sql server2005中 如何把带逗号的数字字符串转换为数字。除了replace,要函数转换的方法

SQL Server如何将Id相同的字段合并,并且以逗号隔开

使用SQL如何把用逗号等字符隔开的字符串转换成列表

mysql查询某数字在某字段以逗号隔开的字符里面

oracle列转行函数

SQL拆分逗号分隔的字符串