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

 --取说明书模块枚举,结果格式为:'dmtContraindication|dmtAttentionDesc|'
declare @enumArray varchar(max)
set @enumArray=''
select @enumArray=@enumArray+cast( t.DrugFieldContrast_Enum as varchar(MAX)) +'|'
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

【原】sql 将某列拼成一个字符串的更多相关文章

  1. sql 将某列转换成一个字符串 for xml path用法

    declare @test table( name varchar(10)) insert into @test values('a') insert into @test values('b') i ...

  2. sql将一列数据拼成一个字符串的方法

    SELECT STUFF(CONVERT(VARCHAR(500), ( SELECT TOP 10 ',' + BG_Country FROM dbo.BS_Budget FOR XML PATH( ...

  3. sql server 将某一列的值拼成一个字符串 赋值到一个字段内

    DECLARE @refCodeitems VARCHAR(800),   SELECT @refCodeitems=ISNULL(@refCodeitems,'')+refCodeitem +'/' ...

  4. SQL——将两列合并成一列

    将两列合并连接成一列,需要注意的是列的格式必须是NVARCHAR或者VARCHAR类型 ), call_uuid, ) +','+agent_code '   PerDate 1 ,980408102 ...

  5. [SQL Server]一列多行转换为字符串

    在 SQL Server 中,如何将多行数据变成一个字符串保存. skill 投石 挖矿 刮痧 上面三行数据想要得到结果为:投石,挖矿,刮痧 有两种方式: 拼接字符串. 使用 for XML 首先创建 ...

  6. SQL 替换指定列中的指定字符串

    Update 表名 Set 列名 = Replace(列名,‘被替换的字符’,‘要替换的字符’) Demo: UPDATE BPM_DailySET Workstation = REPLACE(Wor ...

  7. Sqlserver 查询把多行内容拼成一个字符串

    当使用:SELECT ','+Id FROM dbo.Test FOR XML PATH('')); //这样读取的数据虽然是1,2,3,4,但是仍然是xml格式,所以当数据超过2033时候,用sql ...

  8. 神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

    前言 开心一刻 感觉不妙呀,弟弟舔它! 不该舔的,舔到怀疑人生了...... GROUP BY 后 SELECT 列的限制 标准 SQL 规定,在对表进行聚合查询的时候,只能在 SELECT 子句中写 ...

  9. [转]神奇的 SQL 之层级 → 为什么 GROUP BY 之后不能直接引用原表中的列

    原文:https://www.cnblogs.com/youzhibing/p/11516154.html 这篇文章,对group by的讲解不错 -------------------------- ...

随机推荐

  1. 319. Bulb Switche

    There are n bulbs that are initially off. You first turn on all the bulbs. Then, you turn off every ...

  2. 112. Path Sum

    Given a binary tree and a sum, determine if the tree has a root-to-leaf path such that adding up all ...

  3. Spring-IOC之前世今生

    没使用IOC之前 贯用工厂模式调用 bean组件 可类比为: 去商场买东西,你是先想好自己要买什么了,然后去寻找商品(逛商场的同学不要扯皮啊2333) 用了IOC之后 可类比为: 所有网上购物,所有的 ...

  4. pascal矩阵 分类: 数学 2015-07-31 23:01 3人阅读 评论(0) 收藏

    帕斯卡矩阵 1.定义       帕斯卡矩阵:由杨辉三角形表组成的矩阵称为帕斯卡(Pascal)矩阵. 杨辉三角形表是二次项 (x+y)^n 展开后的系数随自然数 n 的增大组成的一个三角形表. 如4 ...

  5. tomcat 启动时内存溢出

    在tomcat_home/bin目录下找到catalina.bat,用文本编辑器打开,加上下面一行: set JAVA_OPTS= -Xms1024M -Xmx1024M -XX:PermSize=2 ...

  6. 2016 Sichuan Province Programming Contest

    2016 Sichuan Province Programming Contest 代码 2016 Sichuan Province Programming Contest A. Nearest Ne ...

  7. URAL 1320 Graph Decomposition(并查集)

    1320. Graph Decomposition Time limit: 0.5 secondMemory limit: 64 MB There is a simple graph with an ...

  8. 采用libsvm进行mnist训练

    #coding:utf8 import cPickle import gzip import numpy as np from sklearn.svm import libsvm class SVM( ...

  9. Python中strip()函数

    在python API中这样解释strip()函数:

  10. 015. asp.net实现简易聊天室

    通过Application和Session来实现简单的聊天室和在线用户数统计 Global.asax代码: <%@ Application Language="C#" %&g ...