Подтвердить что ты не робот

Целочисленное целое число T-SQL для двузначной строки

Я не могу найти простой способ сделать это в T-SQL.

У меня есть, например, столбец (SortExport_CSV), который возвращает целое число от 2 до 90. Если сохраненное число является одной цифрой, мне нужно преобразовать его в 2-значную строку, начинающуюся с 0. Я попытался использовать CAST, но я зациклился на том, как отобразить стиль в предпочтительном формате (0 #)

Конечно, это легко сделать на интерфейсе (SSRS, MSAccess, Excel и т.д.), но в этом случае у меня нет интерфейса и должен предоставить исходный набор данных уже отформатированной двухзначной строкой.

4b9b3361

Ответ 1

select right ('00'+ltrim(str( <number> )),2 )

Ответ 2

SELECT RIGHT('0' + CAST(sortexport_csv AS VARCHAR), 2)
FROM your_table

Ответ 3

Вы можете использовать встроенную функцию форматирования T-SQL:

declare @number int  = 1
select format (@number, '0#')

Ответ 4

Вы все делаете слишком много работы:

right(str([email protected]),2)

-- for a function, same idea: 
--
create function zeroPad( @yourNum int, @wid int)
as 
begin
  return right( [email protected]), @wid)
end

Ответ 5

Преобразуйте значение в строку, добавьте перед ним нуль (так что это два или древовидные символы) и получите последние символы:

right('0'+convert(varchar(2),Sort_Export_CSV),2)

Ответ 6

DECLARE @Number int = 1;
SELECT RIGHT('0'+ CONVERT(VARCHAR, @Number), 2)
--OR
SELECT RIGHT(CONVERT(VARCHAR, 100 + @Number), 2)
GO

Ответ 7

Другой пример:

select 
case when teamId < 10 then '0' + cast(teamId as char(1)) 
else cast(teamId as char(2)) end      
as 'pretty id',
* from team

Ответ 8

Вот крошечная функция, которая оставила значение пэда с заданным дополнением char Вы можете указать, сколько символов должно быть дополнено слева.

   Create    function fsPadLeft(@var varchar(200),@padChar char(1)='0',@len int)
      returns varchar(300)
    as
    Begin
      return replicate(@PadChar,@len-Len(@var))[email protected]
    end

Для вызова:

declare @value int; set @value =2
select dbo.fsPadLeft(@value,'0',2)

Ответ 9

здесь вы идете

select RIGHT(REPLICATE('0', 2) + CAST(2 AS VARCHAR(2)), 2)

должен вернуть 02

Ответ 10

попробовать

right('0' + convert(varchar(2), @number),2)

Ответ 11

Попробуйте это

- Создать число от 2 до 90

;with numcte as(
select 2 as rn
union all
select rn+1 from numcte where rn<90)

- программа, которая форматирует число, основанное на длине

select case when LEN(rn) = 1 then '00'+CAST(rn as varchar(10)) else CAST(rn as varchar(10)) end number
from numcte

Частичный выход:

number    
002
003
004
005
006
007
008
009
10
11
12
13
14
15
16
17
18
19
20

Ответ 12

SELECT
replace(str(month(DATEADD(month, -1, '2012-02-29')), 2),' ' , '0')

Ответ 13

Вы можете создать такую ​​функцию:

CREATE FUNCTION [dbo].[f_convert_int_to_2_digits](@input int)
RETURNS varchar(10)
AS
BEGIN
    --return value
    DECLARE @return varchar(10)

    if @input < 10
    begin
    set @return = '0' + convert(varchar(1), @valor)
end
    else
    begin
        set @return = convert(varchar(10), @input)
    end

    -- return result
    RETURN @return

END

а затем использовать его везде:
select [dbo].[f_convert_int_to_2_digits](<some int>)

Ответ 14

Вы можете попробовать это

SELECT RIGHT( '0' + convert( varchar(2) , '0' ),  2 ) -- OUTPUTS : 00
SELECT RIGHT( '0' + convert( varchar(2) , '8' ),  2 ) -- OUTPUTS : 08
SELECT RIGHT( '0' + convert( varchar(2) , '9' ),  2 ) -- OUTPUTS : 09
SELECT RIGHT( '0' + convert( varchar(2) , '10' ), 2 ) -- OUTPUTS : 10
SELECT RIGHT( '0' + convert( varchar(2) , '11' ), 2 ) -- OUTPUTS : 11

это должно помочь