[SQL] 어떻게 T-SQL에서 제로 패딩 문자열로 int를 변환합니까?
SQL어떻게 T-SQL에서 제로 패딩 문자열로 int를 변환합니까?
하자가 00000001 같은, 내가 제로 패딩 문자열로 그 INT로 변환 할 수 있습니다 방법 1의 값을 int를 가지고 있다고?
해결법
-
==============================
1.
Declare @MyInt integer Set @MyInt = 123 Declare @StrLen TinyInt Set @StrLen = 8 Select Replace(Str(@MyInt, @StrLen), ' ' , '0')
-
==============================
2.또 다른 방법은 다음과 같습니다
또 다른 방법은 다음과 같습니다
DECLARE @iVal int = 1 select REPLACE(STR(@iVal, 8, 0), ' ', '0')
-
==============================
3.2012 SQL 서버로 당신은 지금이 작업을 수행 할 수 있습니다
2012 SQL 서버로 당신은 지금이 작업을 수행 할 수 있습니다
format(@int, '0000#')
-
==============================
4.나를 위해이 작품 :
나를 위해이 작품 :
SELECT RIGHT('000' + CAST(Table.Field AS VARCHAR(3)),3) FROM Table
...
나는이 사용자 함수를 생성
T-SQL 코드 :
CREATE FUNCTION CIntToChar(@intVal Int, @intLen Int) RETURNS nvarchar(24) AS BEGIN IF @intlen > 24 SET @intlen = 24 RETURN REPLICATE('0',@intLen-LEN(RTRIM(CONVERT(nvarchar(24),@intVal)))) + CONVERT(nvarchar(24),@intVal) END
예 :
SELECT dbo.CIntToChar (867 6) AS COD_ID
산출
000867
-
==============================
5.사용 FORMAT (<전화 번호>를 '00000000') 많은 제로로 사용 당신이 당신의 최종 결과에 숫자를 가질 필요가있다.
사용 FORMAT (<전화 번호>를 '00000000') 많은 제로로 사용 당신이 당신의 최종 결과에 숫자를 가질 필요가있다.
여기에 FORMAT 함수의 공식 문서입니다
-
==============================
6.나는 특정 전체 길이에 패드에 노력하고있어 경우에, 나는 그래서 같은 복제 및 DATALENGTH 함수를 사용합니다 :
나는 특정 전체 길이에 패드에 노력하고있어 경우에, 나는 그래서 같은 복제 및 DATALENGTH 함수를 사용합니다 :
DECLARE @INT INT DECLARE @UNPADDED VARCHAR(3) DECLARE @PADDED VARCHAR(3) SET @INT = 2 SET @UNPADDED = CONVERT(VARCHAR(3),@INT) SET @PADDED = REPLICATE('0', 3 - DATALENGTH(@UNPADDED)) + @UNPADDED SELECT @INT, @UNPADDED, @PADDED
나는 단순 여기 변수를 사용하지만, 당신은 당신이 오랫동안의 <= 최종 문자열 길이만큼 함께 시작하는 것이 당신이 전체 문자열의 마지막 길이를 지정할 수 있습니다, 확인하고 INT의 크기에 대해 걱정하지.
-
==============================
7.난 항상 사용 :
난 항상 사용 :
SET @padded = RIGHT('z0000000000000' + convert(varchar(30), @myInt), 8)
의 Z- 내재적 가산 / 연접 대해 INT로 열로 변환으로부터 SQL을 멈춘다.
-
==============================
8.INT 부정적인를 갈 수 있다면 그렇게 주변이 가끔 이렇게 얻기 위해, 문제가있다 :
INT 부정적인를 갈 수 있다면 그렇게 주변이 가끔 이렇게 얻기 위해, 문제가있다 :
DECLARE @iVal int set @iVal = -1 select case when @ival >= 0 then right(replicate('0',8) + cast(@ival as nvarchar(8)),8) else '-' + right(replicate('0',8) + cast(@ival*-1 as nvarchar(8)),8) end
-
==============================
9.아주 정직 방법으로 패딩에 대해 생각하는 '공의, 당신은 당신의 @의 _int 4 개 소수를 가지고있어 고정 된 경우 4 주사한다'0 ':
아주 정직 방법으로 패딩에 대해 생각하는 '공의, 당신은 당신의 @의 _int 4 개 소수를 가지고있어 고정 된 경우 4 주사한다'0 ':
select RIGHT( '0000'+ Convert(varchar, @_int), 4) as txtnum
; 당신의 고정 된 공간이 3 인 경우, 당신은 3'0의 주입
select RIGHT( '000'+ Convert(varchar, @_int), 3) as txtnum
; 내가 주입 이하 '00'은 각 건물에 대한 99 개 라벨을 생성하는
declare @_int int set @_int = 1 while @_int < 100 Begin select BldgName + '.Floor_' + RIGHT( '00'+ Convert(varchar, @_int), 2) + '.balcony' from dbo.tbl_FloorInfo group by BldgName set @_int = @_int +1 End
결과는 다음과 같습니다
'BldgA.Floor_01.balcony' 'BldgB.Floor_01.balcony' 'BldgC.Floor_01.balcony' .. .. 'BldgA.Floor_10.balcony' 'BldgB.Floor_10.balcony' 'BldgC.Floor_10.balcony' .. .. .. 'BldgA.Floor_99.balcony' 'BldgB.Floor_99.balcony' 'BldgC.Floor_99.balcony'
-
==============================
10.아니면 정말 하드 코어를 가고 싶어한다면 ... ;-)
아니면 정말 하드 코어를 가고 싶어한다면 ... ;-)
declare @int int set @int = 1 declare @string varchar(max) set @string = cast(@int as varchar(max)) declare @length int set @length = len(@string) declare @MAX int set @MAX = 8 if @length < @MAX begin declare @zeros varchar(8) set @zeros = '' declare @counter int set @counter = 0 while (@counter < (@MAX - @length)) begin set @zeros = @zeros + '0' set @counter = @counter + 1 end set @string = @zeros + @string end print @string
-
==============================
11.그리고 복제를 사용하여이 하나있다 :
그리고 복제를 사용하여이 하나있다 :
SELECT REPLICATE('0', 7) + '1'
물론, 당신은 리터럴을 대체 할 수있는 7 필요에 따라 적절한 기능을 가진 '1'; 위는 당신에게 당신의 예를 제공합니다. 예를 들면 :
SELECT REPLICATE('0', 8 - LEN(CONVERT(nvarchar, @myInt))) + CONVERT(nvarchar, @myInt)
의지 패드 8 자 제로 위로 미만 8 곳의 정수입니다.
이제 REPLICATE의 두 번째 인수에 부정적인 번호는 NULL을 반환합니다. 그게 가능하다고한다면, 다음 8 개 이상의 문자가있는 경우 0을 선도하지 않고 수를 반환하는 유착을 사용할 수 있습니다 (예를 들어, @myInt는 위의 예에서 1 억 이상이 될 수 있음) :
SELECT COALESCE(REPLICATE('0', 8 - LEN(CONVERT(nvarchar, @myInt))) + CONVERT(nvarchar, @myInt), CONVERT(nvarchar, @myInt))
-
==============================
12.나는 찰스 Bretana의 대답은 간단하고 빠른라고 생각합니다. STR을 사용하지 않고 유사한 솔루션입니다 :
나는 찰스 Bretana의 대답은 간단하고 빠른라고 생각합니다. STR을 사용하지 않고 유사한 솔루션입니다 :
SELECT REPLACE(REVERSE( CONVERT(CHAR(5 /*<= Target length*/) , REVERSE(CONVERT(VARCHAR(100), @MyInt))) ), ' ', '0')
from https://stackoverflow.com/questions/309165/how-do-i-convert-an-int-to-a-zero-padded-string-in-t-sql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] SQL Server 2008의 복합 외래 키 만들기 (0) | 2020.07.02 |
---|---|
[SQL] 어떻게 jDBI에서의 쿼리 할까? (0) | 2020.07.02 |
[SQL] ROW_NUMBER에 필요한 동적 피벗 () (0) | 2020.07.02 |
[SQL] 계획을 설명 MySQL의에서 "멀리 최적화 된 선택 테이블"의 의미 (0) | 2020.07.02 |
[SQL] 오라클 DB : 어떻게 사건을 무시하고 쿼리를 작성할 수있다? (0) | 2020.07.02 |