91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

SQL中怎么實現數據補零操作

發布時間:2021-08-03 16:18:36 來源:億速云 閱讀:729 作者:Leah 欄目:數據庫

SQL中怎么實現數據補零操作,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

比如88和800兩個整數,在作為數字類型時,800大于88是毋庸置疑的,但轉換為字符串后,'800'和'88'的大小就被顛覆了,我們就做一個小實驗,權當做一個驗證,腳本如下:

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

運行結果如下:

SQL中怎么實現數據補零操作

其實很容易理解,這是因為varchar大小的比較是從***位開始,比較其ascii碼大小,出現***個大于另一個時,那整個varchar的大小就這樣定了的。

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

其實很簡單,我們可以固定轉換后的位數,不夠位數的在左側補零即可。比如我們固定7位,“88”對應的就是“0000088”、“800”對應的就是“0000800”,這時候再比較或者排序,就不會亂了。

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

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

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

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

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

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;

這明顯有點作了,相信沒幾個人會這么干,但這種方法也是可行的。

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

SQL中怎么實現數據補零操作

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

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

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

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業資訊頻道,感謝您對億速云的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

sql
AI

大城县| 肥乡县| 舞阳县| 自贡市| 鸡西市| 大田县| 丽江市| 礼泉县| 亚东县| 老河口市| 望谟县| 淮阳县| 西丰县| 开原市| 龙川县| 边坝县| 牡丹江市| 满洲里市| 道孚县| 彰化市| 遂平县| 陆川县| 安平县| 腾冲县| 乾安县| 平阴县| 柳河县| 卢氏县| 东辽县| 凤山市| 綦江县| 平阴县| 宁武县| 咸阳市| 昌乐县| 修水县| 称多县| 来凤县| 南投市| 桐城市| 庆城县|