加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sqlserver模仿mysql函数FIND_IN_SET,group_concat的功能

发布时间:2020-12-12 13:44:49 所属栏目:MsSql教程 来源:网络整理
导读:一、判断某个逗号隔开的字段中有某个值 FIND_IN_SET('a','a,b,c,d') 用 CHARINDEX(','+'b'+',','+'a,c'+',') 0 替代 二、模仿mysql的group_concat的示例 SELECT?id,????????????val=(?SELECT?[value]?+','????????????????????FROM?tb?AS?b?????????????????

一、判断某个逗号隔开的字段中有某个值

FIND_IN_SET('a','a,b,c,d') 用 CHARINDEX(','+'b'+',','+'a,c'+',') > 0 替代


二、模仿mysql的group_concat的示例

SELECT?id,?????
???????val=(?SELECT?[value]?+','?????
???????????????FROM?tb?AS?b?????
???????????????WHERE?b.id?=?a.id
???????????????FOR?XML?PATH('')??)?????
FROM?tb?AS?a??????
GROUP?BY?id
SELECT?id,?????
???????[val]=STUFF(?(SELECT?','+[value]?????
?????????????????????FROM?tb?AS?b?????
?????????????????????WHERE?b.id?=?a.id?????
?????????????????????FOR?XML?PATH(''))?,?1?,?''?)????
FROM?tb?AS?a??????
GROUP?BY?id
--删除、创建临时表
drop?table?#table1;
select?*?into?#table1
from?(
SELECT?myId,'auto'?as?type
)allData
--把数据按myId分类链接,然后按链接后数据的长度倒序排序
select?*?from?(
??select?myId,??val=STUFF(?(SELECT?'、'+type?????
?????????????????????FROM?#table1?AS?b?????
?????????????????????WHERE?b.myId?=?ta.myId?????
?????????????????????FOR?XML?PATH(''))?,?''?)
??from?#table1?ta
??group?by?myId
)?dd?order?by?LEN(val)?desc

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读