将Excel列转为字符串存到数据库表中

先将excel表中一竖列数据合并到一行并用逗号隔开,

https://jingyan.baidu.com/article/fedf07375aa25d35ad897761.html

执行下列函数  即可
---  exec p_insetPp '白鸽饮料,佰盛,棒棒娃,草珊瑚,诚旺,诚信,程华,崇州酒,川洋,川影牛肉,纯森嘎嘎,德丰,刁嘴娃,顶丰饼干,咚咚食品,都市牧场,法丽兹,福海食品,冠客,贵丰皮蛋,好日子,和鑫瑞,和兴,亨裕食品,恒大冰泉,宏泰记,沪洲,黄和食品,汇达,惠氏,吉百利(怡口莲),吉吉富,佳宝,佳好,佳壹多,嘉利来,金厨娘,金枣庄,劲仔,旌晶,菊乐,卡夫奥利奥,康宏食品,可口可乐,口水族,坤能坤皇,老郎酒,老顺发鲜花饼,乐吧薯片,乐明花生,溜溜梅,六六玩具,麦农食品,脉动,猫多哩,美好,蒙牛牛奶,南先,牛栏山,齐力,琪琪,亲亲虾条,雀巢,仁兴,日用品,三辉,商源,上好佳,顺江,素味居,汤麻饼,唐记,特耐特,天伦月饼,天马,跳跳龙,桶酒,旺宝,旺旺牛奶,旺旺食品,无尽食品,武汉冠生园,喜之郎,仙笛,香香嘴,小吃嘴,小食品,心月,新都冠生园,鑫鸿,鑫未,星球杯,兴丰食品,兴天府,熊博士,徐福记,徐隆巨星,炫迈,椰树,伊利奶粉,伊利牛奶,邑丰食品,银鹭,永宏,长源,珍乐意,真巧饼干,正翰,正中沙琪玛,钟静,子弟,百事可乐,光明牛奶,红牛,加多宝,乐虎,芒果汁,西岭雪山青梅酒,统一水,娃哈哈,椰泰,阿尔卑斯糖果,百家粉丝,波力海苔,达利园,得益,好巴适,徽记,好丽友,米老头,统一面,有友,酒类,二锅头,哈尔滨,剑南春,康师傅,农夫,MM红酒,名牛,啤酒,RIO果酒,苏打水,五粮液VVV,五粮液,小角楼,玉川饮料,德芙,箭牌,乐事薯片,香飘飘,金富楼,泸涛酒业,大货,志成酒水,康乐糖果,巴巴兔沙琪玛,采阳茶叶,干果/水果礼盒,宏堡,奶粉,文君茶,雅芙,美泰,上冠集团,北大荒,南方黑黑乳,维维,兴安红,兴隆粮油,大健立,口水娃,噜咪啦,妙脆角,南方芝麻糊,奇峰,维维豆奶,湘巧,中粮挂面,宝洁,白玫瑰,锦菊,久荣,蓝风,首味盐,爱得利,碧丽花露水,柏姿丹,博之美,唇膏,彩虹,长虹,采乐,采琪,大宝,雕牌皂,蜂花,芙蓉肥皂,高洁丝,高露洁牙膏,红包,杂牌护肤品,黑人牙膏,家必备,洁柔纸,隆力奇,六神花露水,冷酸灵牙膏,亮涛,羚榆,蓝月亮,龙滋味,闽达,美肤堂,美即面膜,妙洁,毛巾,每日好纸杯,美涛,蒂花沐浴露,美质原生,南孚电池,NK,妮维雅,欧莱雅,便宜杀虫水,便宜牙刷,七度空间,强生,强生花露水,伞.雨衣,三A牙刷,索芙特,施华蔻,舒客牙膏,狮狼电池,万芳,威露士,威猛先生,心相印纸,鞋油,相宜本草,依采,云蕾,云南白药牙膏,云南三七牙膏,月如意,牙医生牙膏,自然堂,中山,滋源,百瑞,蕾琪,鑫鑫商贸,学习用品,自由点,奥妙,多芬,凡士林,力士,旁氏,清扬,卫宝,夏士莲,中华牙膏'


--  select currentvalue,* from zc_sequence  WHERE sequencename='ppbh'
-- select  * from  pp

-- delete  from  pp where wwwPPBH>'01040'


if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[StrToTable]') and xtype in (N'FN', N'IF', N'TF')) 
-- 删除函数 
drop function [dbo].[StrToTable] 
GO 


-- varchar 最大  8000
create Function StrToTable(@str varchar(8000))
Returns @tableName Table
(
   str2table varchar(50)
)
As
--该函数用于把一个用逗号分隔的多个数据字符串变成一个表的一列,例如字符串'1,2,3,4,5' 将编程一个表,这个表
Begin
set @str = @str+','
Declare @insertStr varchar(50) --截取后的第一个字符串
Declare @newstr varchar(8000) --截取第一个字符串后剩余的字符串
set @insertStr = left(@str,charindex(',',@str)-1)
set @newstr = stuff(@str,1,charindex(',',@str),'')
Insert @tableName Values(@insertStr)
while(len(@newstr)>0)
begin
   set @insertStr = left(@newstr,charindex(',',@newstr)-1)
   Insert @tableName Values(@insertStr)
   set @newstr = stuff(@newstr,1,charindex(',',@newstr),'')
end
Return
End








if exists (select * from sysobjects where id = object_id(N'[p_insetPp]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)  
drop procedure p_insetPp
go
create procedure p_insetPp
@str varchar(8000)  --最大长度
as


begin

declare @currentvalue    numeric(10)           
declare @wwwPPBH varchar(50)
declare @wwwPPMC varchar(50)
declare @i int 
declare @maxh  int 


set @i=1


select  @maxh=COUNT(*)  from  StrToTable(@str)
select * from(
select row_number()over(order by (select 1))rn ,* from StrToTable(@str) 
)t where rn=4



while(@i<=@maxh)
begin
select @wwwPPMC=str2table from(
select row_number()over(order by (select 1))rn ,* from StrToTable(@str) 
)t where rn=@i
if not exists(select 2 from pp where wwwppmc=@wwwPPMC )
begin
--查出最大品牌编号
select @currentvalue=currentvalue from zc_sequence  WHERE sequencename='ppbh'
set @wwwPPBH=right('00000'+cast(convert(VARCHAR(5),@currentvalue) as varchar),5);  
INSERT  INTO  pp(wwwPPBH,wwwPPMC,sfky) values(@wwwPPBH,@wwwPPMC,1);
--  更新最大值
  UPDATE zc_sequence SET currentvalue=currentvalue+1 WHERE sequencename='ppbh'
end 
set @i=@i+1
end
end
go
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值