В SQL Server 2008 я хочу представить целое число в виде трехсимвольной строки, поэтому:

  • 3 становится '003'
  • 5 становится '005'
  • 107 становится '107'

Как я могу это сделать?

1
Sreejith S T 28 Окт 2009 в 09:44
Это не только считается невежливым, но все заглавные буквы труднее читать.
 – 
Matthew Scharley
28 Окт 2009 в 09:58
4
Люди: хватит ныть и отредактируйте это ;-p
 – 
Marc Gravell
28 Окт 2009 в 10:18
Но Марк, если вы не скажете им почему вы его отредактировали, они, вероятно, сделают это снова в следующий раз.
 – 
Aaron Bertrand
28 Окт 2009 в 16:43

2 ответа

Лучший ответ

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

DECLARE @Table TABLE(
        Val INT
)

INSERT INTO @Table (Val) SELECT 1
INSERT INTO @Table (Val) SELECT 10
INSERT INTO @Table (Val) SELECT 100

SELECT  REPLICATE('0',3 - LEN(CAST(Val AS VARCHAR(3)))) + CAST(Val AS VARCHAR(3))
FROM    @Table
WHERE   ABS(Val) < 1000
0
Adriaan Stander 28 Окт 2009 в 09:53
/* Method 1 Using RIGHT function */
SELECT RIGHT('000' + CAST(NumericColumn AS VARCHAR(3)), 3) PaddedCnumericColumn 
FROM MyTable


/* Method 2 Using RIGHT AND REPLICATE function */
SELECT  RIGHT(REPLICATE('0', 3) + CAST(NumericColumn AS VARCHAR(3)), 3) PaddedCnumericColumn 
FROM MyTable
7
Mitch Wheat 28 Окт 2009 в 09:52
Первый подход здесь довольно милый.
 – 
Marc Gravell
28 Окт 2009 в 10:30