簡體   English   中英

T-SQL-CAST字符,前導零到整數

[英]T-SQL - CAST char with leading zeros to int

我想將前導零的char轉換為int,例如從'00010'00010 我嘗試使用CASTCONVERT

select CONVERT(int, '00010')

但是該函數在開頭刪除零,並返回10而不是00010 您知道對此有任何簡單的解決方案嗎? 輸入的長度將始終為5。

從數學上講,前導零是沒有意義的,因此Int不能有前導零。

如果需要顯示前導零,則始終可以轉換為varchar並使用right串聯,如下所示:

DECLARE @MyVal int = 10;
SELECT RIGHT('00000' + CAST(@MyVal as varchar(5)), 5)

您必須閱讀有關數據類型的信息。 INT所關注的不只是位模式。 每當您以可閱讀的格式看到數字時,實際值都會轉換為由數字組成的字符串。 但是此數字格式不是實際的INT

前導零從來都不是INT本身的一部分,但可以添加到字符串表示中。 因此,您的問題(從字面上看)實際上沒有任何意義。

如果有一個像00012這樣的字符串,並且想像一個數字一樣使用它,則應該將其強制轉換:

SELECT CAST('00012' AS INT) + 2; --14

其他答案向您展示了一些從INT獲取填充字符串表示形式的方法,但這是相反的方向:

SELECT REPLACE((STR(12,5),' ','0'); --00012

您可以結合使用以下方法:

DECLARE @PaddedNumber CHAR(5)='00012'
SELECT REPLACE(STR(CAST(@PaddedNumber AS INT) + 2,5),' ','0'); --00014

補齊的數字(按類型是-一個字符串)被強制轉換為INT ,然后用於計算。 結果是INT ,可以將其轉換為填充字符串。 但是最終結果的類型是字符串...

SELECT FORMAT(CONVERT(INT,'00010'), 'd5') 

應該解決問題:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM