Преобразуйте число в varchar в SQL с форматированием

Википедия имеет хорошую статью [приблизительно 110] поисковые роботы , покрывая многие алгоритмы и соображения.

Однако я не потрудился бы писать свой собственный поисковый робот. Это - большая работа, и так как Вам только нужен "простой поисковый робот", я думаю все, в чем Вы действительно нуждаетесь, стандартный поисковый робот . Существует много бесплатных и поисковых роботов с открытым исходным кодом, которые, вероятно, сделают все, в чем Вы нуждаетесь с очень небольшой работой с Вашей стороны.

19
задан Jeff Stock 19 November 2009 в 16:01
поделиться

5 ответов

RIGHT('00' + CONVERT(VARCHAR, MyNumber), 2)

Имейте в виду, что это повредит числам> 99. Вы можете учесть эту возможность.

31
ответ дан 30 November 2019 в 03:08
поделиться

Используйте функцию ВПРАВО ... например

DECLARE @testnum TINYINT
SET @testnum = 3
PRINT RIGHT('00' + CONVERT(VARCHAR(2), @testnum), 2)
4
ответ дан 30 November 2019 в 03:08
поделиться
declare @t  tinyint
set @t =3
select right(replicate('0', 2) + cast(@t as varchar),2)

То же: об ограничивающем эффекте для чисел> 99

Если вы хотите обслуживать 1-255, вы можете использовать

select right(replicate('0', 2) + cast(@t as varchar),3)

Но это даст вам 001, 010, 100 и т. Д.

1
ответ дан 30 November 2019 в 03:08
поделиться

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

DECLARE @Table TABLE(
        Val INT
)

INSERT INTO @Table SELECT 3
INSERT INTO @Table SELECT 30

DECLARE @NumberPrefix INT
SET @NumberPrefix = 2
SELECT  REPLICATE('0', @NumberPrefix - LEN(Val)) + CAST(Val AS VARCHAR(10))
FROM    @Table
4
ответ дан 30 November 2019 в 03:08
поделиться

Каков диапазон значений? От 0 до 10? Если это так, попробуйте:

SELECT REPLICATE('0',2-LEN(@t)) + CAST(@t AS VARCHAR)

Это обрабатывает от 0 до 9, а также от 10 до 99.

Теперь tinyint может увеличиваться до значения 255. Если вы хотите обрабатывать> 99–255, попробуйте следующее решение :

declare @t  TINYINT
set @t =233
SELECT ISNULL(REPLICATE('0',2-LEN(@t)),'') + CAST(@t AS VARCHAR)

Чтобы понять решение, выражение слева от + вычисляет количество нулей в начале строки.

В случае значения 3 длина равна 1. 2 - 1 равно 1. REPLICATE Добавляет один ноль. В случае значения 10 длина равна 2. 2–2 равно 0. REPLICATE ничего не добавляет. В случае значения 100 длина равна -1, что дает NULL. Однако нулевое значение обрабатывается и устанавливается в пустую строку.

Теперь, если вы решите, что, поскольку tinyint может содержать до 255 и вы хотите, чтобы ваше форматирование состояло из трех символов, просто измените 2-LEN на 3-LEN в левое выражение, и все готово.

2
ответ дан 30 November 2019 в 03:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: