sql列相加,SQL Server同列字符串相加

有一张表test,数据如下:
column2 column1
3 43243
2 erew
1 gg
1 kk
1 jj
1 hh
这时我需要查询test中所有column2相等的column1列的字符相加的值。
既这样的结果:
3 43243
2 erew
1 gg,kk,jj,hh
sql语句该怎么写?
先来看看几个函数
1.stuff(str1,start,length,str2)
这个函数的含义是:往str1字符串里插入str2字符串,从start位置开始插入,同时从start位置开始,删掉str1中length个字符,这个start的值不能超过str1的长度范围,否则stuff函数返回null。
SELECT STUFF('abc', 1, 2, 'xyz')
结果:
xyzc
2.ltrim(str),rtrim(str)
这两个函数简单,ltrim去掉字符str的左边空格,rtrim去掉字符str的右边空格。
3.for xml path(str)
把查询的数据生成XML数据.
拿上面的test表为例:
select column1 from test where column2=1 for xml path
结果

gg


kk


jj


hh

如果给path加个参数
select column1 from test where column2=1 for xml path('root')
结果

gg


kk


jj


hh

如果把path的参数改为空字符
select column1 from test where column2=1 for xml path('')
结果
gg
kk
jj
hh
如果查询时不写列名会怎样?
select column2+'' from test where column2=1 for xml path('')
结果
ggkkjjhh
现在可以可以处理开始的问题了
select distinct column2,stuff((select ','+ltrim(column1) from test where column2=b.column2
for xml path('')),1,1,'') from test b
查询结果就是开始的那个结果。
Tags:  php字符串相加 字符串相加 sql两列相加 sql列相加

延伸阅读

最新评论

发表评论