SQL中怎么實(shí)現(xiàn)數(shù)據(jù)補(bǔ)零操作

SQL中怎么實(shí)現(xiàn)數(shù)據(jù)補(bǔ)零操作,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供渭南網(wǎng)站建設(shè)、渭南做網(wǎng)站、渭南網(wǎng)站設(shè)計(jì)、渭南網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、渭南企業(yè)網(wǎng)站模板建站服務(wù),十年渭南做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

比如88和800兩個(gè)整數(shù),在作為數(shù)字類型時(shí),800大于88是毋庸置疑的,但轉(zhuǎn)換為字符串后,'800'和'88'的大小就被顛覆了,我們就做一個(gè)小實(shí)驗(yàn),權(quán)當(dāng)做一個(gè)驗(yàn)證,腳本如下:

declare @num1 int=88;  declare @num2 int=800;  if cast(@num1 as varchar)>cast(@num2 as varchar)   print '''88''大于''800'''  else   print '''800''大于''88''';

運(yùn)行結(jié)果如下:

SQL中怎么實(shí)現(xiàn)數(shù)據(jù)補(bǔ)零操作

其實(shí)很容易理解,這是因?yàn)関archar大小的比較是從***位開始,比較其ascii碼大小,出現(xiàn)***個(gè)大于另一個(gè)時(shí),那整個(gè)varchar的大小就這樣定了的。

基于這樣的邏輯,我們在將int轉(zhuǎn)為varchar時(shí),可能要用來排序或者與其它字段進(jìn)行合并,如果大小或者順序混亂了,對我們的操作可能就會(huì)有影響,那這種情況應(yīng)該如何處理呢?

其實(shí)很簡單,我們可以固定轉(zhuǎn)換后的位數(shù),不夠位數(shù)的在左側(cè)補(bǔ)零即可。比如我們固定7位,“88”對應(yīng)的就是“0000088”、“800”對應(yīng)的就是“0000800”,這時(shí)候再比較或者排序,就不會(huì)亂了。

那如何補(bǔ)零呢?道理非常簡單,我們先用6個(gè)零組成的字符串加上數(shù)字轉(zhuǎn)成的字符串,然后再使用right函數(shù)截取最右邊的7位就行了,參看下面的腳本:

right('000000'+cast(@num1 as varchar),7)

這個(gè)方法是最簡單的,如果您覺得不過癮,也可以計(jì)算下int轉(zhuǎn)為varchar后的長度,根據(jù)長度再根據(jù)replicate函數(shù)制造缺失的零即可,參看下面的腳本:

replicate('0',7-len(cast(@num1 as varchar)))+cast(@num1 as varchar)

明顯看上去***種方法更直觀。如果您還嫌不過癮,您也可以使用case語句判斷不同長度直接補(bǔ)不同位數(shù)的零,參看下面的腳本:

case len(cast(@num1 as varchar))    when 1 then '000000'+cast(@num1 as varchar)   when 2 then '00000'+cast(@num1 as varchar)   when 3 then '0000'+cast(@num1 as varchar)   when 4 then '000'+cast(@num1 as varchar)   when 5 then '00'+cast(@num1 as varchar)   when 6 then '0'+cast(@num1 as varchar)   when 7 then cast(@num1 as varchar)  end;

這明顯有點(diǎn)作了,相信沒幾個(gè)人會(huì)這么干,但這種方法也是可行的。

各種方式處理的效果參看下圖:

SQL中怎么實(shí)現(xiàn)數(shù)據(jù)補(bǔ)零操作

同理,如果您想在右邊補(bǔ)零,道理也是一樣的,這里要用到left函數(shù),比如可以這樣:

left(cast(@num1 as varchar)+'000000',7)

不過是在后面補(bǔ)零,從左邊截取而已。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

本文標(biāo)題:SQL中怎么實(shí)現(xiàn)數(shù)據(jù)補(bǔ)零操作
鏈接分享:http://www.muchs.cn/article20/ihegjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供域名注冊、搜索引擎優(yōu)化、App設(shè)計(jì)電子商務(wù)、網(wǎng)站收錄外貿(mào)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營