sql语句 怎样实现提取某列的关键字添加到新的一列?
如图1所示,我的关键词有"压缩机","主轮","螺杆","作动筒","APU","控制器",利用sql语句,提取“描述”列的关键词并插入“类型”列,如果不止一个,就用逗号...
如图1所示,我的关键词有"压缩机","主轮","螺杆","作动筒","APU","控制器",利用sql语句,提取“描述”列的关键词并插入“类型”列,如果不止一个,就用逗号隔开,达到如图2的效果。谢谢了,分不是很多!
补充一下:1,是针对sql server 的数据库 2,图二 有个小错误,第二行应该是“主轮,螺杆” 展开
补充一下:1,是针对sql server 的数据库 2,图二 有个小错误,第二行应该是“主轮,螺杆” 展开
1个回答
展开全部
如果你的SQL版本支持正则表达式就好办了。如果不支持,有两个方案。方案1,用case 和charindex。方案二写函数(这个比较麻烦,思路是把那些非关键字替换掉了)。以方案1写一个样子给你做参考。解题: 你的关键字是:【压缩机,主轮,螺杆,作动筒,APU,控制器】这里面的一种或多种,也就是去查找[描述]列里包含这些关键字,如果包含就以逗号分隔串上放到[类型]。语句:
select [描述],(case when charindex('压缩机',[描述])>0 then else '' end)+
(case when charindex('主轮',[描述])>0 then '主轮,' else '' end)+
(case when charindex('螺杆',[描述])>0 then '螺杆,' else '' end)+
(case when charindex('作动筒',[描述])>0 then '作动筒,' else '' end)+
(case when charindex('APU',[描述])>0 then 'APU,' else '' end)+
(case when charindex('控制器',[描述])>0 then '控制器' else '' end)
from tableName
select [描述],(case when charindex('压缩机',[描述])>0 then else '' end)+
(case when charindex('主轮',[描述])>0 then '主轮,' else '' end)+
(case when charindex('螺杆',[描述])>0 then '螺杆,' else '' end)+
(case when charindex('作动筒',[描述])>0 then '作动筒,' else '' end)+
(case when charindex('APU',[描述])>0 then 'APU,' else '' end)+
(case when charindex('控制器',[描述])>0 then '控制器' else '' end)
from tableName
追问
不好意思,好长时间没上了,请问如果我的数据量很大的话,哪个更合适一点呢?(数据是几百万,关键字是100-200个?)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询