T-SQL의 PadLeft 함수 A가 있습니다. id —- 1 2 12 123 1234 id0으로 값 을

다음 표 A가 있습니다.

id
----
1
2
12
123
1234

id0으로 값 을 왼쪽 채울 필요가 있습니다 .

id
----
0001
0002
0012
0123
1234

이것을 어떻게 할 수 있습니까?



답변

나는 이것이 당신이 찾고있는 것일 수 있다고 믿습니다.

SELECT padded_id = REPLACE(STR(id, 4), SPACE(1), '0') 

FROM tableA

또는

SELECT REPLACE(STR(id, 4), SPACE(1), '0') AS [padded_id]

FROM tableA

두 번째 예제에서 구문을 테스트하지 않았습니다. 100 % 작동하는지 확실하지 않습니다. 약간의 조정이 필요할 수 있습니다.하지만 원하는 출력을 얻는 방법에 대한 일반적인 아이디어를 전달합니다.

편집하다

의견에 나열된 문제를 해결하려면 …

@ pkr298-예 STR은 숫자에서만 작동합니다 … OP의 필드는 ID입니다 … 따라서 숫자로만.

@Desolator-물론 작동하지 않습니다 … 첫 번째 매개 변수의 길이는 6 자입니다. 다음과 같이 할 수 있습니다.

SELECT REPLACE(STR(id,
(SELECT LEN(MAX(id)) + 4 FROM tableA)), SPACE(1), '0') AS [padded_id] FROM tableA

이것은 이론적으로 골 포스트를 움직여야합니다 … 숫자가 커질수록 항상 작동해야합니다 …. 1 또는 123456789 …

따라서 최대 값이 123456이면 0000123456이 표시되고 최소값이 1이면 0000000001이 표시됩니다.


답변

SQL Server는 이제 2012 버전부터 FORMAT 함수를 지원 하므로 다음과 같이됩니다.

SELECT FORMAT(id, '0000') FROM TableA

트릭을 할 것입니다.

ID 또는 열이 a에 varchar있고 먼저 변환 한 숫자를 나타내는 경우 :

SELECT FORMAT(CONVERT(INT,id), '0000') FROM TableA


답변

declare @T table(id int)
insert into @T values
(1),
(2),
(12),
(123),
(1234)

select right('0000'+convert(varchar(4), id), 4)
from @T

결과

----
0001
0002
0012
0123
1234


답변

이전 게시물이지만 아마도 이것은 누군가를 도울 수 있습니다.

공백이 아닌 4 개의 문자로 끝날 때까지 완료하려면 :

SELECT RIGHT ('0000'+COLUMNNAME, 4) FROM TABLENAME;

10 시까 지 완료하려면 :

SELECT RIGHT ('0000000000'+COLUMNNAME, 10) FROM TABLENAME;

열이 numeric 인 경우 먼저 다음 코드를 사용하여 varchar로 변환하십시오.

Select RIGHT('0000'+Convert(nvarchar(20), COLUMNNAME), 4)
From TABLENAME

숫자 필드로 10까지 완료하려면 :

SELECT RIGHT ('0000000000'+Convert(nvarchar(20), COLUMNNAME), 10) FROM TABLENAME;


답변

이 시도:

SELECT RIGHT(REPLICATE('0',4)+CAST(Id AS VARCHAR(4)),4) FROM [Table A]


답변

-이것들을보세요.

select FORMAT(1, 'd4');
select FORMAT(2, 'd4');
select FORMAT(12, 'd4');
select FORMAT(123, 'd4');
select FORMAT(1234, 'd4');

-이것이 도움이되기를 바랍니다.


답변

이것은 문자열, 정수 및 숫자에 대해 작동합니다.

SELECT CONCAT(REPLICATE('0', 4 - LEN(id)), id)

어디 4길이를 바람직하다. 4 자리 이상의 숫자에 대해 작동하며 NULL값에 빈 문자열을 반환 합니다.