【SQLSERVER】处理字段逗号分隔 分别取值问题
作者:互联网
之前遇到 数据库字段保存的数据是 1,2,3 这种格式的数据 要根据逗号分别分隔并取 1、2、3分别对应的中文值。
网上查找一下方法 记录一下 这些方法:用charindex和for xml path实现批量替换的功能,适用于sql server 2005及以上版本。
微软官方文档charindex用法:https://docs.microsoft.com/zh-cn/sql/t-sql/functions/charindex-transact-sql?redirectedfrom=MSDN&view=sql-server-2017
微软官方文档for xml path用法:https://docs.microsoft.com/zh-cn/sql/t-sql/queries/select-for-clause-transact-sql?redirectedfrom=MSDN&view=sql-server-2017
参考地址:
https://zhidao.baidu.com/question/1046243361841961459.html
最终实现的sql语句如下:
可以根据自己的情况 将table1和table2替换成自己需要的表,字段也要替换成要替换的表。
--测试数据 with table1(id,code) as ( select 1,'001' union all select 2,'001,002' union all select 3,'001,002,003'), table2(code,name) as( select '001','数学' union all select '002','体育' union all select '003','美术') --用charindex和for xml path实现批量替换的功能,适用于sql server 2005及以上版本 select table1.id,stuff(( select ','+table2.name from table2 where charindex(','+table2.code+',',','+table1.code+',')>0 order by table2.code for xml path('') ),1,1,'') as name from table1
下面还有其他的一些方式 ,但是没有实现我想要的情况 ,结果会按照 比如说字符串内容含有,‘12,1,2’这样的 其中12会被分隔成1,2和12这样就不满足我的要求。
参考地址:https://wenku.baidu.com/view/f418d83258fb770bf78a5569.html
标签:table2,code,SQLSERVER,逗号,charindex,table1,sql,取值,select 来源: https://www.cnblogs.com/SignX/p/11531842.html