关于sql中把一列中的值再分成小列查询的问题
一张表里面有4列:id,colA,colB,colC;其中colB一列里面的值为:PA,类一,2.5;PB,类二,66;PC,类三,7;(每一组参数值中有英文名例如'PA...
一张表里面有4列:id,colA,colB,colC;
其中colB一列里面的值为:
PA,类一,2.5;PB,类二,66;PC,类三,7;
(每一组参数值中有英文名例如'PA',中文名如'类一',参数值'5.7',均用','隔开,与下一组参数用';'隔开)
现在需要查询一个这样的值:
id colA 类一 类二
(相当于把colB里面的值通过逗号和分号,分成更细小的列,如不明白请看截图:
原始数据:
需要查询出来获得的数据: 展开
其中colB一列里面的值为:
PA,类一,2.5;PB,类二,66;PC,类三,7;
(每一组参数值中有英文名例如'PA',中文名如'类一',参数值'5.7',均用','隔开,与下一组参数用';'隔开)
现在需要查询一个这样的值:
id colA 类一 类二
(相当于把colB里面的值通过逗号和分号,分成更细小的列,如不明白请看截图:
原始数据:
需要查询出来获得的数据: 展开
展开全部
SELECT ID,colA,类一=SUBSTRING(colB,CHARINDEX('类一',colB)+3,CASE WHEN CHARINDEX(';',colB,CHARINDEX('类一',colB)+3)>0 THEN CHARINDEX(';',colB,CHARINDEX('类一',colB))-3 ELSE LEN(colb) END-CHARINDEX('类一',colB)),
类一=SUBSTRING(colB,CHARINDEX('类二',colB)+3,CASE WHEN CHARINDEX(';',colB,CHARINDEX('类二',colB)+3)>0 THEN CHARINDEX(';',colB,CHARINDEX('类二',colB))-3 ELSE LEN(colb) END-CHARINDEX('类二',colB))
FROM 表
类一=SUBSTRING(colB,CHARINDEX('类二',colB)+3,CASE WHEN CHARINDEX(';',colB,CHARINDEX('类二',colB)+3)>0 THEN CHARINDEX(';',colB,CHARINDEX('类二',colB))-3 ELSE LEN(colb) END-CHARINDEX('类二',colB))
FROM 表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
select Id,colA(select PA as '类一', PB as '类二', PC as '类三' from table ) from table;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询