정수를 4 자리의 varchar로 변환 할 수 있습니까? 예 정수 1이 있고 정수형 550의 경우 varchar '0001'을 얻습니다. varchar '0550'을 얻습니다.특수 정수 변환
감사
정수를 4 자리의 varchar로 변환 할 수 있습니까? 예 정수 1이 있고 정수형 550의 경우 varchar '0001'을 얻습니다. varchar '0550'을 얻습니다.특수 정수 변환
감사
또는?
right('000'+ convert(varchar,MyNum),4)
나는 다양한 방법에 대해 약간의 거친 타이밍을 수행했으며이 솔루션은 다른 것보다 조금 더 빠른 것처럼 보였다. 즉
DECLARE @loop INT;
DECLARE @MyNum INT;
DECLARE @Upper INT;
DECLARE @Lower INT;
DECLARE @result VARCHAR;
DECLARE @start DATETIME;
SET @Lower = 1;
SET @Upper = 9999;
SET @loop = 10000;
SET @start = GETDATE();
WHILE @loop > 0 BEGIN
SELECT @MyNum = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0);
SET @loop = @loop -1;
SET @result = right('000'+ convert(varchar,@MyNum),4);
-- SET @result = right(10000 + @MyNum, 4);
-- SET @result = right(convert(float, @MyNum)/10000, 4);
-- SET @result = stuff('0000', 1 + 4 - len(@MyNum), len(@MyNum), @MyNum);
-- SET @result = replace(str(@MyNum, 4), ' ', '0');
END;
SELECT GETDATE() - @start;
이것이 더 빠를 수 있는지 궁금합니다 ... right (convert (float, MyNum)/10000, 4) –
다음은 Mikael의 답변이 더 나은 경우입니다. –
이 시도 :
SELECT REPLACE(STR(550, 4), ' ', '0')
!
Onw way (len 입력> 4 인 경우 NULL);
;with t(f) as (
select 1 union select 11 union select 111 union select 1111
)
select
f,
stuff('0000', 1 + 4 - len(f), len(f), f)
from t
>>
f (No column name)
1 0001
11 0011
11 0111
1111 1111
declare @Num int
set @Num = 1
select right([email protected], 4)
은 무엇'정수로 일한다 ... 나를 놀라게 99999'? 또는 정수'-9999'? 또는 우리는'0-9999' 사이에 보장됩니까? –
[이 질문에]보십시오 (http://stackoverflow.com/questions/121864/most-efficient-t-sql-way-to-pad-a-varchar-on-the-left-to-a-a- 특정 길이) 정확한 복제물은 아니지만 도움이 될 수 있습니다. – Jacob
[이 질문] (http://stackoverflow.com/questions/2397161/how-to-convert-int-to-char-with-leading-zeros)도 도움이 될 수 있습니다. – denolk