sql 把字段拼起来显示

按老师的ID分类后,将对应的班级ID用 “/” 拼接起来

Sqlserver 

SELECT 字段1, 
    [随便来个名字就行] = stuff(( 
        SELECT '/' + [年级2] FROM aa t 
        WHERE t.老师ID = aa.老师ID FOR xml path('')) , 1 , 1 , '') 
        FROM aa
        GROUP BY 老师ID

语法逻辑:网上找的其他博客,写的很清楚。

 STUFF参数拓展:

Mysql、Oracle

SELECT 
老师ID,
group_concat(年级ID separator '/')class,
FROM table_name 
GROUP BY 老师ID

SqlServer举例:

create table #a_aa_a(
teacher_id int,
teacher_name varchar(10),
teacher_class varchar(10)
)
insert into #a_aa_a VALUES  (1,'张老师','一年级')
insert into #a_aa_a VALUES  (1,'张老师','二年级')
insert into #a_aa_a VALUES  (1,'张老师','三年级')
insert into #a_aa_a VALUES  (2,'李老师','四年级')
insert into #a_aa_a VALUES  (2,'李老师','五年级')
insert into #a_aa_a VALUES  (2,'李老师','六年级')
insert into #a_aa_a VALUES  (3,'托尼老师','幼儿一班')
insert into #a_aa_a VALUES  (3,'托尼老师','幼儿二班')
insert into #a_aa_a VALUES  (3,'托尼老师','幼儿三班')

 

Sql:

SELECT teacher_id,'班级' = stuff(( 
        SELECT '/' + teacher_class FROM #a_aa_a t 
        WHERE t.teacher_id = aa.teacher_id FOR xml path('')) , 1 , 1 , '') 
        FROM #a_aa_a aa
        GROUP BY teacher_id

结果

备注:

之前在有的博客上看到用的不是stuff函数,而是replace函数

首先,这俩个都是替换函数

区别:

官方语法:
REPLACE ( string_expression , string_pattern , string_replacement )

将string_expression 字符串中的string_pattern全部替换为string_replacement

STUFF ( character_expression , start , length , replaceWith_expression )

在character_expression字符串中,从下标为start(从1开始)长度为length的字段替换为replaceWith_expression

所以在上述案例中,如果用REPLACE替换函数,不符合需求,要用stuff()

--------------------------------------------------------------------------------------------

mysql拼接俩个字段

concat()函数

sqlserver拼接俩个字段

直接用+来拼接,有需要的符号如/、-等符号

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值