Ⅰ sql 不夠七位數 在左側自動補零,怎麼實現
您好:
跟您一個參考資料
第一種方法:
right('00000'+cast(@countasvarchar),5)
其中'00000'的個數為right函數的最後參數,例如這里是5,所以有5個0
@count就是被格式化的正整數
例如:
1、selectright('00000'+cast(dense_rank()over(orderbyzsbh)asVARCHAR(20)),5)
2、declare@countint
set@count=0
while(@count<1000)
begin
printright('00000'+cast(@countasvarchar),5)
set@count=@count+1
end
第二種方法:使用REPLICATE函數,將字串值重復指定的次數。例如:
REPLICATE('重復',3)輸出結果為:重復重復重復
【值得注意的是當integer_expression值為負值,則返回NULL】
因此,補0操作可如下實現:
SELECTREPLICATE('0',5-len('9'))+'9'--左邊補0,如00009
SELECT'9'+REPLICATE('0',5-len('9'))--右邊補0,如90000
第三種方法:使用stuff函數,刪除指定長度的字元,並在指定的起點處插入另一組字元。例如:
第一個字元串abcdef中刪除從第2個位置(字元b)開始的三個字元,然後在刪除的起始位置插入第二個字元串,從而創建並返回一個字元串。
SELECTSTUFF('abcdef',2,3,'ijklmn')
輸出結果為:
aijklmnef。
因此補0操作可如下實現:
selectstuff('00000',len('00000')-len('123')+1,len('123'),'123')
Ⅱ 這樣的sql/pl自動補位語句怎麼寫
create table test( testid int)
insert into test values(357)
insert into test values(2783)
insert into test values(58690)
--你在創建一個表
create table tab(rowid int)
--在向資料庫裡面插入0到99
insert into tab values(0)
insert into tab values(1)
insert into tab values(2)
insert into tab values(3)
insert into tab values(4)
insert into tab values(5)
insert into tab values(6)
insert into tab values(7)
insert into tab values(8)
insert into tab values(9)
......
select substring(rtrim(str((ltrim(str(testid))+(select left('0000',5-len(testid))))+tab.rowid)),1,10) from test , tab where (5-len(testid))>=len(rowid) or (len(testid)=5 and rowid=0) order by testid,rowid
弄了很久,也不知道你要的結果是不是這個結果,你把這段sql可以考進sqlserver2005或者2000去運行看下結果,上面我只添加了0--9的,你可以添到99在試下。
Ⅲ sql中不足六位的補零該怎麼寫
假設#a 表有欄位 a char(10)
該代碼即可實現該功能:
if exists(select a from #a where len(a)<=6)
begin
update #a set a=rtrim(cast(a as char(8)))+'000'
end
else if exists(select a from #a where len(a)<0)
begin
rollback transaction
end
else
begin
print '該數據已經有六位'
end
Ⅳ 在sql語句里怎麼右補空格
示例:
右補空格,字元長度定為10
declare@strvarchar(1000)
set@str='123'
selectleft(@str+'',10)
Ⅳ sql位數不足補0
假設結果值用變數a表示,補位用b表示,需求結果用c表示
if len(a)=1 then
b="000"
elseif len(a)=2 then
b="00"
elseif len(a)=3 then
b="0"
else
b=""
end if
c=b&a
Ⅵ sql數據補位
用lapd函數,左補零
用法
select LPAD(100,5,0) from al
100為欄位名,5為補完後的長度,0為補充的字元
Ⅶ SQL不夠10位 補0 補到10位寫何寫
咱們來看:
cast('000000000'+convert(int,code)asvarchar(20))
首先:
convert(int,code) :你把code 轉為 int
然後
'000000000'+convert(int,code)我估計sqlserver肯定把表達式作為數字相加了,那麼0000...的相加就沒有作用了。
最後
就不是你要的結果了。
大致應該這樣:
SELECT
right(cast('000000000'+rtrim(code)asvarchar(20)),10),code,
id,pydate,isnull(lzdate,'9999-12-31'),0
FROMzlemployee
Ⅷ SQL SERVER自動在後面補0滿足8位數請問怎麼寫
如果是字元串的話,可以通過字元串連接的方式實現,由於SQL Server沒有Oracle的lpad和rpad函數,可以使用REPLICATE函數代替
column_name+replicate('0',8-column_name.len()); 缺多少位就補上多少位,
Ⅸ SQL SERVER自動在前面補0滿足10位請問怎麼寫
咱們來看:
cast('000000000'+convert(int,code)asvarchar(20))
首先:
convert(int,code) :你把code 轉為 int
然後
'000000000'+convert(int,code)我估計sqlserver肯定把表達式作為數字相加了,那麼0000...的相加就沒有作用了。
最後
就不是你要的結果了。
大致應該這樣:
SELECT
right(cast('000000000'+rtrim(code)asvarchar(20)),10),code,
id,pydate,isnull(lzdate,'9999-12-31'),0
FROMzlemployee
Ⅹ sql字元串如何進行比較.它的原理是什麼.為什麼要進行補位
sql字元串如何進行比較.它的原理是什麼.為什麼要進行補位
字元串 不能比較大小 它只能判斷是否相等 只有數字才能比較大