當前位置:首頁 » 編程語言 » sqlserver補0
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sqlserver補0

發布時間: 2022-04-20 05:44:05

sqlserver中如何判斷一列中當值為一位數時前面插入000,二位數插入00,三位數插入0,四位就不做操作

直接用case語句不就行了?
CREATETABLEtest(idint)
INSERTINTOdbo.test
(id)
SELECT1
UNIONALL
SELECT
2
UNIONALL
SELECT
10
UNIONALL
SELECT
18
UNIONALL
SELECT
113
UNIONALL
SELECT
117
UNIONALL
SELECT
1011
UNIONALL
SELECT
1200
語句:
1、
SELECTid,sid=CASEWHENLEN(id)=1THEN'000'+CAST(IDASVARCHAR(10))
WHENLEN(id)=2THEN'00'+CAST(IDASVARCHAR(10))
WHENLEN(id)=3THEN'0'+CAST(IDASVARCHAR(10))
WHENLEN(id)=4THENCAST(IDASVARCHAR(10))END
FROMtest
2、
selectid,sid=right('000'+CAST(IDASVARCHAR(10)),4)fromtest

結果:

1 0001

2 0002

10 0010

18 0018

113 0113

117 0117

1011 1011

1200 1200

因為我用的int類型,所以類型轉化

以上是sqlserver資料庫的寫法

⑵ sql 不夠七位數 在左側自動補零,怎麼實現

sqlserver:
select right(cast('0000000000'+rtrim(欄位) as varchar(20)),7)

oralce:
select lpad(欄位, 7 , '0') from al

⑶ 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')

⑷ sqlserver自動把數字前面0省略

sqlserver自動,
把數字前面0省略,
應該設置的時候就是設置省略無意義數字。

⑸ sqlserver 中,如何查詢把缺少數據自動填補出來,下圖中缺少2013-05-27 19:00:00.000 130.4560000000

  1. 問題分析:您要的結果是要每一小時一條記錄,補充添寫中間間隔一小時以上的記錄。並且不另增加記錄:

  2. 問題解決:找到每一條記錄時間加1小時在表中不存在的記錄,然後加一小時填入表中,不包括最後(最大的)的時間。

3.語句實現(兩種方案):

以下語句可以在每一個缺少的數據後加入一小時後填入,但間隔更大(超過2小時後就不行了):

insert into tablename

select fieldtime=dateadd(hh,1,fieldtime),fieldnum from tablename a

where not exists(select 1 from tablename b where dateadd(hh,1,a.fieldtime)=b.fieldtime)

and a.fieldtime!=(select max(fieldtime) from tablename)--去掉最後的時間

以下方案可以完成補充間隔數小時的記錄:將該語句循環執行,直到沒有記錄更改。

insert into tablename

select fieldtime=dateadd(hh,1,fieldtime),fieldnum from tablename a

where not exists(select 1 from tablename b where dateadd(hh,1,a.fieldtime)=b.fieldtime)

and a.fieldtime!=(select max(fieldtime) from tablename)--去掉最後的時間

while @@rowcount>0

select fieldtime=dateadd(hh,1,fieldtime),fieldnum from tablename a where not exists(select 1 from tablename b where dateadd(hh,1,a.fieldtime)=b.fieldtime) and a.fieldtime!=(select max(fieldtime) from tablename)

⑹ 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



⑺ sqlserver查詢一列某幾個數據的結果,如果沒有值補0。

這個可以用update語句來做,等於那個值放在條件中。

⑻ 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怎樣在固定值後面補0

具體什麼資料庫?

以sqlserver,mysql,oracle各自為例:

sqlserver:

createtabletest
(點名varchar(20));

insertintotestvalues('HS901');
insertintotestvalues('HS9010');
insertintotestvalues('HS9010');

執行:

selectLEFT(點名+'00000000',8)fromtest

結果:

⑽ sqlserver同時對一個表進行增加

你這個問題,如果數據已經到了99,再加1怎麼辦?是變成100,還是什麼?


如果是100。那麼你之前01,02。這樣的數據,是不是默認幾位數,不足的補0?

--代碼基本實現功能,但是由於你的需求我並不是很明確,所以先這樣吧。
CREATEPROCEDUREproc_Add
@newProjectIDnvarchar(20)OUTPUT
AS
BEGIN
BEGINTRANSACTION
DECLARE@errorint=0
DECLARE@projectIDnvarchar(20)
DECLARE@indexint
DECLARE@numbernvarchar(20)

SELECTTOP(1)@projectID=a.ProjectIDFROMdbo.tbASa
ORDERBYa.IDDESC

SET@number=SUBSTRING(@projectID,CHARINDEX('-',@projectID,4)+1,LEN(@projectID))

SET@index=PATINDEX('%[1-9]%',@number)

IF(@index=0)
BEGIN
SET@newProjectID=SUBSTRING(@projectID,1,CHARINDEX('-',@projectID,4))+'01'
END
ELSE
BEGIN
IF(@index=1)
BEGIN
SET@number=CAST(@numberASint)+1
SET@newProjectID=SUBSTRING(@projectID,1,CHARINDEX('-',@projectID,4))+@number
END
ELSEIF(@index=2)
BEGIN
IF(CAST(SUBSTRING(@number,2,1)ASint)=9)
BEGIN
SET@newProjectID=SUBSTRING(@projectID,1,CHARINDEX('-',@projectID,4))+'10'
END
ELSE
BEGIN
SET@number='0'+CAST(SUBSTRING(@number,2,1)ASint)+1
SET@newProjectID=SUBSTRING(@projectID,1,CHARINDEX('-',@projectID,4))+@number
END
END
END

IF(@error=0)
COMMITTRANSACTION
ELSE
ROLLBACKTRANSACTION
END