今天完成任务之SQL中len的使用
生活随笔
收集整理的這篇文章主要介紹了
今天完成任务之SQL中len的使用
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
由于昨天搬家,經(jīng)理感覺有點對不住了,呵呵,其實 是我自己對不住了,
上午就很辛苦的將算法寫好,在自己的思路和流程下一個一個數(shù)據(jù)庫都在我的手下形成了編碼,其實上午根本沒有忙什么都在想怎么搞了,下午才真正的將它給弄好,下面講解下我自己聽哈子。
首先。我們將原來的表請出來一個并且在里面添加一個字段,然后進行自動的編寫代號。好下面來寫具體的內(nèi)容。
首先在我的思路里面有要在不同的情況下執(zhí)行不同的方法,所以我真正的用到了len函數(shù)。
其實len函數(shù)也很簡單,我是這么寫的
len(@item_clsno) 也就是求出@item_clsno的變量的長度。
那么我們開始我們的具體的思路了,開始i先備份一張表
SELECT?*?INTO?dbo.table_zong1
FROM?dbo.table_zong
ORDER?BY?item_clsno 然后我們就在這個表上操作咯
SELECT?[id],[item_clsno]
FROM?dbo.table_zong1
open?YOUBIAO
declare?
@id?bigint,
@item_clsno?varchar(510)
fetch?next?from?YOUBIAO
into?@id,@item_clsno
if?len(@item_clsno)=3
?begin
??update?dbo.table_zong1
??set?item_subno=@item_clsno+'0'
??where?[id]=@id
?end
else?if?len(@item_clsno)=2
?begin?
??update?dbo.table_zong1
??set?item_subno=@item_clsno+'00'
??where?[id]=@id
?end
?else?if?len(@item_clsno)=4
??update?dbo.table_zong1
??set?item_subno=@item_clsno
??where?[id]=@id
??
while?@@fetch_status=0
?begin
??fetch?next?from?YOUBIAO
??into?@id,@item_clsno
??if?len(@item_clsno)=3
???begin
???update?dbo.table_zong1
???set?item_subno=@item_clsno+'0'
???where?[id]=@id
???end
??else?if?len(@item_clsno)=2
???begin?
???update?dbo.table_zong1
???set?item_subno=@item_clsno+'00'
???where?[id]=@id
???end
??else
???begin
???update?dbo.table_zong1
???set?item_subno=@item_clsno
???where?[id]=@id
???end
?end
close?YOUBIAO
DECLARE?YOUBIAO?CURSOR?FOR
SELECT?[id],[item_subno]
FROM?dbo.table_zong1
close?YOUBIAO
open?YOUBIAO
declare?
@id?bigint,
@item_subno?varchar(510),
@bianliang?int,
@item_subno2?varchar(510),
@bianliangvarchar?varchar(510)
Fetch?next?from?YOUBIAO
INTO?@id,@item_subno
set?@bianliang=1
set?@item_subno2=@item_subno
set?@bianliangvarchar='000'+cast(@bianliang?as?nvarchar(510))
UPDATE?dbo.table_zong1
SET?item_subno?=?@item_subno+@bianliangvarchar
WHERE?[id]=@id
?
WHILE?@@FETCH_STATUS=0
BEGIN?
????Fetch?next?from?YOUBIAO
????INTO?@id,@item_subno
????if?@item_subno2=@item_subno
????begin
????????set?@bianliang=@bianliang+1
?if?len(@bianliang)=1
?begin
??????????set?@bianliangvarchar='000'+cast(@bianliang?as?nvarchar(510))
?????????UPDATE??dbo.table_zong1
?????????SET?item_subno=@item_subno+@bianliangvarchar
??????????WHERE?[id]=@id
?end
?else?if?len(@bianliang)=2
?begin
??set?@bianliangvarchar='00'+cast(@bianliang?as?nvarchar(510))
?????????UPDATE??dbo.table_zong1
?????????SET?item_subno=@item_subno+@bianliangvarchar
??????????WHERE?[id]=@id
?end
?else?if?len(@bianliang)=3
?begin
??set?@bianliangvarchar='0'+cast(@bianliang?as?nvarchar(510))
?????????UPDATE??dbo.table_zong1
?????????SET?item_subno=@item_subno+@bianliangvarchar
??????????WHERE?[id]=@id
?end
?else
?begin
??set?@bianliangvarchar=cast(@bianliang?as?nvarchar(510))
?????????UPDATE??dbo.table_zong1
?????????SET?item_subno=@item_subno+@bianliangvarchar
??????????WHERE?[id]=@id
?end
????????
????end
????else
????begin
????????set?@item_subno2=@item_subno
????????set?@bianliang=1
????????set?@bianliangvarchar='000'+cast(@bianliang?as?nvarchar(510))
?????????UPDATE??dbo.table_zong1
?????????SET?item_subno=@item_subno+@bianliangvarchar
??????????WHERE?[id]=@id
????end
????
END
CLOSE?YOUBIAO
這樣編碼就算是完成了。
到最后經(jīng)理說我的編碼有問題,原來是8位到13位的編碼沒有取價格最低的,沒辦法重新做了一下子,感覺還可以就是要了點時間,因為6萬條數(shù)據(jù)所花的時間太長了。
上午就很辛苦的將算法寫好,在自己的思路和流程下一個一個數(shù)據(jù)庫都在我的手下形成了編碼,其實上午根本沒有忙什么都在想怎么搞了,下午才真正的將它給弄好,下面講解下我自己聽哈子。
首先。我們將原來的表請出來一個并且在里面添加一個字段,然后進行自動的編寫代號。好下面來寫具體的內(nèi)容。
首先在我的思路里面有要在不同的情況下執(zhí)行不同的方法,所以我真正的用到了len函數(shù)。
其實len函數(shù)也很簡單,我是這么寫的
len(@item_clsno) 也就是求出@item_clsno的變量的長度。
那么我們開始我們的具體的思路了,開始i先備份一張表
SELECT?*?INTO?dbo.table_zong1
FROM?dbo.table_zong
ORDER?BY?item_clsno 然后我們就在這個表上操作咯
?
DECLARE?YOUBIAO?CURSOR?FORSELECT?[id],[item_clsno]
FROM?dbo.table_zong1
open?YOUBIAO
declare?
@id?bigint,
@item_clsno?varchar(510)
fetch?next?from?YOUBIAO
into?@id,@item_clsno
if?len(@item_clsno)=3
?begin
??update?dbo.table_zong1
??set?item_subno=@item_clsno+'0'
??where?[id]=@id
?end
else?if?len(@item_clsno)=2
?begin?
??update?dbo.table_zong1
??set?item_subno=@item_clsno+'00'
??where?[id]=@id
?end
?else?if?len(@item_clsno)=4
??update?dbo.table_zong1
??set?item_subno=@item_clsno
??where?[id]=@id
??
while?@@fetch_status=0
?begin
??fetch?next?from?YOUBIAO
??into?@id,@item_clsno
??if?len(@item_clsno)=3
???begin
???update?dbo.table_zong1
???set?item_subno=@item_clsno+'0'
???where?[id]=@id
???end
??else?if?len(@item_clsno)=2
???begin?
???update?dbo.table_zong1
???set?item_subno=@item_clsno+'00'
???where?[id]=@id
???end
??else
???begin
???update?dbo.table_zong1
???set?item_subno=@item_clsno
???where?[id]=@id
???end
?end
close?YOUBIAO
然后再執(zhí)行
這個語句。問剛才改好的數(shù)據(jù)添加編碼
DECLARE?YOUBIAO?CURSOR?FOR
SELECT?[id],[item_subno]
FROM?dbo.table_zong1
close?YOUBIAO
open?YOUBIAO
declare?
@id?bigint,
@item_subno?varchar(510),
@bianliang?int,
@item_subno2?varchar(510),
@bianliangvarchar?varchar(510)
Fetch?next?from?YOUBIAO
INTO?@id,@item_subno
set?@bianliang=1
set?@item_subno2=@item_subno
set?@bianliangvarchar='000'+cast(@bianliang?as?nvarchar(510))
UPDATE?dbo.table_zong1
SET?item_subno?=?@item_subno+@bianliangvarchar
WHERE?[id]=@id
?
WHILE?@@FETCH_STATUS=0
BEGIN?
????Fetch?next?from?YOUBIAO
????INTO?@id,@item_subno
????if?@item_subno2=@item_subno
????begin
????????set?@bianliang=@bianliang+1
?if?len(@bianliang)=1
?begin
??????????set?@bianliangvarchar='000'+cast(@bianliang?as?nvarchar(510))
?????????UPDATE??dbo.table_zong1
?????????SET?item_subno=@item_subno+@bianliangvarchar
??????????WHERE?[id]=@id
?end
?else?if?len(@bianliang)=2
?begin
??set?@bianliangvarchar='00'+cast(@bianliang?as?nvarchar(510))
?????????UPDATE??dbo.table_zong1
?????????SET?item_subno=@item_subno+@bianliangvarchar
??????????WHERE?[id]=@id
?end
?else?if?len(@bianliang)=3
?begin
??set?@bianliangvarchar='0'+cast(@bianliang?as?nvarchar(510))
?????????UPDATE??dbo.table_zong1
?????????SET?item_subno=@item_subno+@bianliangvarchar
??????????WHERE?[id]=@id
?end
?else
?begin
??set?@bianliangvarchar=cast(@bianliang?as?nvarchar(510))
?????????UPDATE??dbo.table_zong1
?????????SET?item_subno=@item_subno+@bianliangvarchar
??????????WHERE?[id]=@id
?end
????????
????end
????else
????begin
????????set?@item_subno2=@item_subno
????????set?@bianliang=1
????????set?@bianliangvarchar='000'+cast(@bianliang?as?nvarchar(510))
?????????UPDATE??dbo.table_zong1
?????????SET?item_subno=@item_subno+@bianliangvarchar
??????????WHERE?[id]=@id
????end
????
END
CLOSE?YOUBIAO
這樣編碼就算是完成了。
到最后經(jīng)理說我的編碼有問題,原來是8位到13位的編碼沒有取價格最低的,沒辦法重新做了一下子,感覺還可以就是要了點時間,因為6萬條數(shù)據(jù)所花的時間太長了。
轉(zhuǎn)載于:https://www.cnblogs.com/itgmhujia/archive/2008/03/06/1093791.html
總結(jié)
以上是生活随笔為你收集整理的今天完成任务之SQL中len的使用的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 史上最全Java学习视频下载地址分享(汉
- 下一篇: my birthday英语范文带翻译