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)[email protected]+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‘,‘#‘)
**/

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

时间: 2024-08-04 06:51:39

Sql Server 列转逗号隔开的字符串 和 逆转的相关文章

sql查询出来的列转换为逗号隔开的字符串

select top 1000 fid,replace(stuff((select distinct ','+substring(f_paez_spmc1,1,charindex(' ',f_paez_spmc1)) from PAEZ_t_xsxxxx where f_paez_spdm like '01%'and c.fid=fid for xml path('')),1,1,''),' ','') as CookNames from PAEZ_t_xsxxxx c group by c.f

Sql Server 中将由逗号“,”分割的一个字符串转换为一个表集,并应用到 in 条件中

Sql Server 中将由逗号","分割的一个字符串,转换为一个表,并应用与 in 条件 select * from tablenmae where id in(1,2,3) 这样的语句和常用,但是如果in 后面的 1,2,3是变量怎么办呢,一般会用字符串连接的方式构造sql语句 string aa="1,2,3"; string sqltxt="select * from tablename where id in ("+aa+")

SQL Server 列存储索引强化

SQL Server 列存储索引强化 SQL Server 列存储索引强化... 1 1. 概述... 1 2.背景... 2 2.1 索引存储... 2 2.2 缓存和I/O.. 2 2.3 Batch处理方式... 2 3 聚集索引... 3 3.1 提高索引创建... 4 3.2 采样的支持... 4 3.3 BookMark的支持... 4 3.4 其他加强... 4 4 更新处理... 4 4.1 随机插入... 6 4.2 批量插入... 6 4.3 删除和更新... 6 4.4 对

SQL Server 列存储性能调优(翻译)

原文地址:http://social.technet.microsoft.com/wiki/contents/articles/4995.sql-server-columnstore-performance-tuning.aspx SQL Server 的列存储索引是SQL Server 2012 release版本新增的内容,用于提高数据仓库的查询性能,本篇文章阐述列存储的性能调优. 列存储索引性能的基本原则 在相同的硬盘和数据量时,列存储能够明显提高部分查询的速度.致使列存储查询效率高的因素

Sql Server 列转行 Pivot使用

今天正好做 数据展示,用到了列转行,列转行有多种方式,Pivot是其中的一种,Povit 是sql server 2005以后才出现的功能, 下面的业务场景: 每个月,进货渠道的总计数量[Total],有中文,英文年月,等数据列, 原始数据如下: 需求: 需要把数据按每一年的1月到12月展示成一行,如上图,怎么办?Povit排上用场了 有的年,可能不是每个月都有,也就是动态列的生成了. 首先要做的就是构建1到12月, DECLARE @temp NVARCHAR(max)='' SELECT @

Sql Server中日期时间格式化为字符串输出

在SQL Server数据库中,SQL Server日期时间格式转换字符串可以改变SQL Server日期和时间的格式,是每个SQL数据库用户都应该掌握的.本文我们主要就介绍一下SQL Server日期时间转字符串的相关知识,接下来就让我们一起来了解一下这部分内容. 日期时间转字符串: Select CONVERT(varchar(100), GETDATE(), 0): 05 16 2006 10:57AM Select CONVERT(varchar(100), GETDATE(), 1):

sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用与 in 条件

string aa="1,2,3"; string sqltxt="select * from tablename where id in ("+aa+")"; 可以把形如“1,2,3”这样的字符串转换为一个临时表,这个表有一列,3行,每一行存一个项目(用逗号分隔开的一部分) 该函数可以这样写: GO /****** Object: UserDefinedFunction [dbo].[StrToTable] Script Date: 2016/

sql server字段是逗号分割的id,关联明细表查询

有时候一张表的一个字段是以逗号分割的一个字符串,分割的数字是明细表的主键id. 关联明细表查询可以这样做: declare @str as nvarchar(1000) declare @areanos as nvarchar(200) --这是把areanos字段赋值给@areanos变量 set @areanos='1,2,3' --将拼接的SQL脚本赋值给变量 set @str='select * from area where areano in ('+@areanos+') order

Sql Server 删除表名包含指定字符串的表

删除包含指定字符串的表 create procedure sys_DeleteTableByTableName(@bianliang varchar(100))asbegindeclare @biao varchar(100),@sql varchar(1000)set @sql='%'[email protected]+'%'declare c cursor for select name from sysobjects where type='u' and name like @sqlset