zoukankan      html  css  js  c++  java
  • 【原】sql 将某列拼成一个字符串

    SQL Server中,写存储过程,时常会碰到这样一个需求:从某个表中取某一列,然后需要将这一列数据以某种形式拼成一个字符串,以供后面使用,下面这种方法能够实现此需求。

    1 --取说明书模块枚举,结果格式为:'dmtContraindication|dmtAttentionDesc|'
    2 declare @enumArray varchar(max) 
    3 set @enumArray='' 
    4 select @enumArray=@enumArray+cast( t.DrugFieldContrast_Enum as varchar(MAX)) +'|'
    5 from DrugFieldContrast t

    对拼接前的这一列循环处理,

    declare @i int
    declare @Uenum varchar(Max) --模块枚举名
    declare @UenumID varchar(Max) --模块枚举ID
    
    while Len(@enumArray)>0
    begin
        SELECT @i = Charindex('|',@enumArray)--获取截取分割符号位置
        if (@i>0)
        begin
            Set @Uenum = SUBSTRING(@enumArray , 1 , @i-1 )--获取枚举
            Set @UenumID = SUBSTRING(@enumArrayID , 1 , 36 )--获取枚举ID
            print @Uenum 
            print @UenumID
            if(@Uenum = 'dosage')--dosage处理开始
            begin
            ...
            end--处理结束
            else
            begin
            ...
            end
        end --if结束
        
        set @enumArray = SUBSTRING ( @enumArray, @i+1 , len(@enumArray)-@i )--从原字符串里删除刚才分割出来的字符串
        set @enumArrayID = SUBSTRING ( @enumArrayID, 38 , len(@enumArrayID)-36 )--从原字符串里删除刚才分割出来的字符串
    end     --while结束

    如果想把多行的某两列组合成一个字符串并且再和其他行拼接成一个大字符串,可以用如下方法

    SELECT 药品名称,药品ID,    (SELECT 药品名称+类型+',' FROM 表1 WHERE 药品ID=A.药品ID FOR XML PATH('')) AS 类型s
    FROM 表1 A
    GROUP BY 药品名称,药品ID

    SELECT 药品名称,药品ID,    (SELECT 类型+',' FROM 表1 WHERE 药品ID=A.药品ID FOR XML PATH('')) AS 类型s
    FROM 表1 A
    GROUP BY 药品名称,药品ID

    select * FROM 表1

  • 相关阅读:
    ES6——>let,箭头函数,this指向小记
    伪元素与伪类的简单介绍
    CSS font-size: 0去除内联元素空白间隙
    python学习笔记1
    一个兼容IE7IE8,H5的多功能视频播放器,H5视频播放器兼容Flash视频播放器
    【数据结构】空间使用
    Matlab计算自相关和互相关
    Matlab计算两个信号的互能量
    Matlab求信号的功率和能量
    Matlab傅氏变换
  • 原文地址:https://www.cnblogs.com/gates/p/3585363.html
Copyright © 2011-2022 走看看