[英]T-SQL - CAST char with leading zeros to int
我想將前導零的char轉換為int,例如從'00010'
到00010
。 我嘗試使用CAST
或CONVERT
:
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.