Giả sử tôi có một giá trị int bằng 1. Làm cách nào tôi có thể chuyển đổi int đó thành chuỗi không có đệm, chẳng hạn như 00000001
?Làm thế nào để chuyển đổi một int thành một chuỗi không đệm trong T-SQL?
Trả lời
Declare @MyInt integer Set @MyInt = 123
Declare @StrLen TinyInt Set @StrLen = 8
Select Replace(Str(@MyInt, @StrLen), ' ' , '0')
Một cách khác là:
DECLARE @iVal int = 1
select REPLACE(STR(@iVal, 8, 0), ' ', '0')
Hoặc nếu bạn thực sự muốn đi hard-core ... ;-)
declare @int int
set @int = 1
declare @string varchar(max)
set @string = cast(@int as varchar(max))
declare @length int
set @length = len(@string)
declare @MAX int
set @MAX = 8
if @length < @MAX
begin
declare @zeros varchar(8)
set @zeros = ''
declare @counter int
set @counter = 0
while (@counter < (@MAX - @length))
begin
set @zeros = @zeros + '0'
set @counter = @counter + 1
end
set @string = @zeros + @string
end
print @string
Nếu tôi đang cố gắng để pad để một tổng chiều dài cụ thể, tôi sử dụng các hàm REPLICATE và DATALENGTH, như vậy:
DECLARE @INT INT
DECLARE @UNPADDED VARCHAR(3)
DECLARE @PADDED VARCHAR(3)
SET @INT = 2
SET @UNPADDED = CONVERT(VARCHAR(3),@INT)
SET @PADDED = REPLICATE('0', 3 - DATALENGTH(@UNPADDED)) + @UNPADDED
SELECT @INT, @UNPADDED, @PADDED
Tôi đã sử dụng các biến ở đây để đơn giản, nhưng bạn thấy, bạn có thể chỉ định chiều dài cuối cùng của chuỗi tổng và không lo lắng về kích thước của INT mà bạn bắt đầu với miễn là < = độ dài chuỗi cuối cùng.
tôi luôn luôn sử dụng:
SET @padded = RIGHT('z0000000000000'
+ convert(varchar(30), @myInt), 8)
z dừng SQL từ ngầm coverting chuỗi thành một int cho việc bổ sung/nối.
Nếu int có thể đi tiêu cực bạn gặp rắc rối, vì vậy để làm được việc này đôi khi tôi làm điều này:
DECLARE @iVal int
set @iVal = -1
select
case
when @ival >= 0 then right(replicate('0',8) + cast(@ival as nvarchar(8)),8)
else '-' + right(replicate('0',8) + cast(@ival*-1 as nvarchar(8)),8)
end
Cảm ơn bắt trường hợp này. –
Công việc này cho tôi:
SELECT RIGHT('000' + CAST(Table.Field AS VARCHAR(3)),3) FROM Table
...
Tôi đã tạo chức năng người dùng này
Mã T-SQL:
CREATE FUNCTION CIntToChar(@intVal Int, @intLen Int) RETURNS nvarchar(24) AS BEGIN
IF @intlen > 24
SET @intlen = 24
RETURN REPLICATE('0',@intLen-LEN(RTRIM(CONVERT(nvarchar(24),@intVal))))
+ CONVERT(nvarchar(24),@intVal) END
Ví dụ:
CHỌN dbo.CIntToChar (867, 6) AS COD_ID
OUTPUT
như của SQL Server 2012 bạn bây giờ có thể làm điều này:
format(@int, '0000#')
Tôi yêu bạn gordy :) – Charles380
tuyệt vời !! Cảm ơn! –
Giải pháp gọn gàng cho sucky int :) – wwmbes
Và sau đó có o này ne, sử dụng REPLICATE:
SELECT REPLICATE('0', 7) + '1'
Tất nhiên, bạn có thể thay thế các chữ 7 và '1' bằng các chức năng thích hợp nếu cần; ở trên cung cấp cho bạn ví dụ của bạn. Ví dụ:
SELECT REPLICATE('0', 8 - LEN(CONVERT(nvarchar, @myInt))) + CONVERT(nvarchar, @myInt)
sẽ pad một số nguyên nhỏ hơn 8 vị trí với số không lên đến 8 ký tự.
Bây giờ, một số âm trong đối số thứ hai của REPLICATE sẽ trả về NULL.Vì vậy, nếu đó là khả năng (ví dụ: @myInt có thể trên 100 triệu trong ví dụ trên), thì bạn có thể sử dụng COALESCE để trả về số không có số 0 đứng đầu nếu có nhiều hơn 8 ký tự:
SELECT COALESCE(REPLICATE('0', 8 - LEN(CONVERT(nvarchar, @myInt))) + CONVERT(nvarchar, @myInt), CONVERT(nvarchar, @myInt))
Rất thẳng về phía trước để suy nghĩ về đệm với '0 là, nếu bạn cố định @ _int của bạn để có 4 số thập phân, bạn tiêm 4' 0's:
select RIGHT('0000'+ Convert(varchar, @_int), 4) as txtnum
; nếu không gian cố định của bạn là 3, bạn tiêm 3'0's
select RIGHT('000'+ Convert(varchar, @_int), 3) as txtnum
; dưới đây tôi tiêm '00' để tạo ra 99 nhãn cho mỗi Bldg
declare @_int int
set @_int = 1
while @_int < 100 Begin
select BldgName + '.Floor_' + RIGHT('00'+ Convert(varchar, @_int), 2)
+ '.balcony' from dbo.tbl_FloorInfo group by BldgName
set @_int = @_int +1
End
Kết quả là:
'BldgA.Floor_01.balcony'
'BldgB.Floor_01.balcony'
'BldgC.Floor_01.balcony'
..
..
'BldgA.Floor_10.balcony'
'BldgB.Floor_10.balcony'
'BldgC.Floor_10.balcony'
..
..
..
'BldgA.Floor_99.balcony'
'BldgB.Floor_99.balcony'
'BldgC.Floor_99.balcony'
- 1. Làm thế nào để chuyển đổi một vector <int> thành một chuỗi?
- 2. Làm thế nào để chuyển đổi một giá trị int thành chuỗi trong Go?
- 3. Làm thế nào để chuyển đổi mảng int thành int?
- 4. chuyển đổi một chuỗi các byte thành một int (python)
- 5. Làm thế nào để chuyển đổi một chuỗi thành CharSequence?
- 6. Làm thế nào để chuyển đổi một số thập phân thành một int trong C#?
- 7. Làm cách nào để chuyển đổi chuỗi C++ thành int?
- 8. OCaml - Làm cách nào để chuyển đổi int thành chuỗi?
- 9. Làm thế nào để bạn chuyển đổi một chuỗi thành ascii thành nhị phân trong C#?
- 10. Làm thế nào để chuyển đổi một mảng byte thành một mảng int?
- 11. Làm thế nào để chuyển đổi QString thành int?
- 12. Làm thế nào để chuyển đổi Integer thành int?
- 13. Làm thế nào để chuyển đổi một chuỗi thành một đối tượng BinaryExpression?
- 14. Làm thế nào để chuyển đổi một chuỗi trích dẫn thành một bình thường trong Makefile?
- 15. Làm thế nào để chuyển đổi một chuỗi thành một byte [] trong Clojure?
- 16. Làm thế nào để chuyển đổi một chuỗi thành một hàm trong Clojure?
- 17. Làm thế nào để chuyển đổi một số nguyên thành một chuỗi một cách dễ dàng?
- 18. Làm thế nào để chuyển đổi một chuỗi thành một hằng số trong Ruby?
- 19. Trong kịch bản shell bash làm thế nào để chuyển đổi một chuỗi thành một số
- 20. Làm thế nào để chuyển đổi một mảng các chuỗi thành một mảng float trong numpy?
- 21. Làm thế nào để chuyển đổi một chuỗi thành một bản đồ trong javascript?
- 22. Làm thế nào để Chuyển đổi int [] để int [,] - C#
- 23. Làm thế nào tôi có thể chuyển đổi một hastable thành một chuỗi json trong PowerShell?
- 24. Làm thế nào tôi có thể chuyển đổi một Int thành một CString?
- 25. Làm thế nào để chuyển đổi một ASCII char thành giá trị int ASCII của nó?
- 26. Mục tiêu-C, làm thế nào để chuyển đổi một đôi thành int?
- 27. Làm thế nào để chuyển đổi chuỗi Java thành byte []?
- 28. Làm thế nào để chuyển đổi int thành chuỗi trên Arduino?
- 29. Làm thế nào để chuyển đổi một số ("") thành Không có trong một dòng?
- 30. Làm thế nào để chuyển đổi một chuỗi ký tự 18 thành một ID duy nhất?
Hoặc trên bay nếu độ dài cố định được đưa ra: 'SELECT REPLACE (STR (DATEPART (THÁNG, [Ngày]), 2), '', '0')' – dakab