將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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章