直接用case語句不就行了?

懷仁ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:028-86922220(備注:SSL證書合作)期待與您的合作!
CREATE?TABLE?test(id?int)
INSERT?INTO?dbo.test
(?id?)
SELECT?1
UNION?ALL
SELECT
2
UNION?ALL
SELECT
10
UNION?ALL
SELECT
18
UNION?ALL
SELECT
113
UNION?ALL
SELECT
117
UNION?ALL
SELECT
1011
UNION?ALL
SELECT
1200
語句:
1、
SELECT?id,sid=CASE?WHEN?LEN(id)=1?THEN?'000'+CAST(ID?AS?VARCHAR(10))
WHEN?LEN(id)=2?THEN?'00'+CAST(ID?AS?VARCHAR(10))
WHEN?LEN(id)=3?THEN?'0'+CAST(ID?AS?VARCHAR(10))
WHEN?LEN(id)=4?THEN?CAST(ID?AS?VARCHAR(10))?END
FROM?test
2、
select?id,sid=right('000'+CAST(ID?AS?VARCHAR(10)),4)?from?test
結(jié)果:
1 0001
2 0002
10 0010
18 0018
113 0113
117 0117
1011 1011
1200 1200
因為我用的int類型,所以類型轉(zhuǎn)化
以上是sqlserver數(shù)據(jù)庫的寫法
咱們來看:
cast('000000000'+convert(int,code)as?varchar(20))
首先:
convert(int,code) :你把code 轉(zhuǎn)為 int
然后
'000000000'+convert(int,code)我估計sqlserver肯定把表達式作為數(shù)字相加了,那么0000...的相加就沒有作用了。
最后
就不是你要的結(jié)果了。
大致應(yīng)該這樣:
SELECT?
right(cast('000000000'+rtrim(code)?as?varchar(20)),10),code,
id,pydate,isnull(lzdate,'9999-12-31'),0?
FROM?zlemployee
您好:
跟您一個參考資料
第一種方法:
right('00000'+cast(@count?as?varchar),5)
其中'00000'的個數(shù)為right函數(shù)的最后參數(shù),例如這里是5,所以有5個0
@count就是被格式化的正整數(shù)
例如:
1、select?right('00000'+cast(dense_rank()?over(?order?by?zsbh?)?as?VARCHAR(20)),5)
2、declare?@count?int
set?@count?=?0
while?(@count??1000)
begin
print?right('00000'+cast(@count?as?varchar),5)
set?@count?=?@count?+1
end
第二種方法:使用REPLICATE函數(shù),將字串值重復(fù)指定的次數(shù)。例如:
REPLICATE('重復(fù)',3)輸出結(jié)果為:重復(fù)重復(fù)重復(fù)
【?值得注意的是當?integer_expression?值為負值,則返回NULL?】
因此,補0操作可如下實現(xiàn):
SELECT?REPLICATE('0',5-len('9'))+'9'?--左邊補0,?如?00009
SELECT?'9'?+?REPLICATE('0',5-len('9'))?--右邊補0,如?90000
第三種方法:使用stuff函數(shù),刪除指定長度的字符,并在指定的起點處插入另一組字符。例如:
第一個字符串?abcdef?中刪除從第?2?個位置(字符?b)開始的三個字符,然后在刪除的起始位置插入第二個字符串,從而創(chuàng)建并返回一個字符串。
SELECT?STUFF('abcdef',?2,?3,?'ijklmn')
輸出結(jié)果為:
aijklmnef。
因此補0操作可如下實現(xiàn):
select?stuff('00000',len('00000')-len('123')+1,len('123'),'123')
sqlserver自動,
把數(shù)字前面0省略,
應(yīng)該設(shè)置的時候就是設(shè)置省略無意義數(shù)字。
sqlserver: select right(cast('0000000000'+rtrim(字段) as varchar(20)),7) oralce: select lpad(字段, 7 , '0') from dual
分享文章:sqlserver前補零,Sql位數(shù)不足補零
文章鏈接:http://chinadenli.net/article33/dsshiss.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站制作、網(wǎng)頁設(shè)計公司、網(wǎng)站內(nèi)鏈、定制網(wǎng)站、云服務(wù)器
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)