int 데이터 필드를 선행 0으로 nvarchar로 변환해야합니다.
예:
1 ‘001’로 변환
867은 ‘000867’등으로 변환합니다.
고마워.
4 시간 후의 답변입니다 …
이 T-SQL 스크립트를 테스트하고 잘 작동합니다!
DECLARE @number1 INT, @number2 INT
SET @number1 = 1
SET @number2 = 867
SELECT RIGHT('000' + CAST(@number1 AS NCHAR(3)), 3 ) AS NUMBER_CONVERTED
SELECT RIGHT('000000' + CAST(@number2 AS NCHAR(6)), 6 ) AS NUMBER_CONVERTED
이 사용자 함수를 만들었습니다.
T-SQL 코드 :
CREATE FUNCTION CIntToChar(@intVal BIGINT, @intLen Int) RETURNS nvarchar(20)
AS
BEGIN
-- BIGINT = 2^63-1 (9,223,372,036,854,775,807) Max size number
-- @intlen contains the string size to return
IF @intlen > 20
SET @intlen = 20
RETURN REPLICATE('0',@intLen-LEN(RTRIM(CONVERT(nvarchar(20),@intVal))))
+ CONVERT(nvarchar(20),@intVal)
END
예 :
dbo.CIntToChar (867, 6)를 COD_ID로 선택
산출
000867
답변
이 시도: select right('00000' + cast(Your_Field as varchar(5)), 5)
결과는 5 자리 숫자로 표시됩니다. 예 : 00001, …., 01234
답변
SQL Server 2012에 도입 된 FORMAT () 함수를 사용할 수도 있습니다 .
http://technet.microsoft.com/library/hh213505.aspx
DECLARE @number1 INT, @number2 INT
SET @number1 = 1
SET @number2 = 867
SELECT FORMAT(@number1, 'd10')
SELECT FORMAT(@number2, 'd10')
답변
사용 REPLICATE
하면 모든 선행 0을 하드 코딩 할 필요가 없습니다.
DECLARE @InputStr int
,@Size int
SELECT @InputStr=123
,@Size=10
PRINT REPLICATE('0',@Size-LEN(RTRIM(CONVERT(varchar(8000),@InputStr)))) + CONVERT(varchar(8000),@InputStr)
산출:
0000000123
답변
이 질문을 High-Jack하는 것은 아니지만 (N) CHAR 데이터 유형 대신 (N) VARCHAR을 사용해야한다는 메모를 작성해야합니다.
RIGHT('000' + CAST(@number1 AS NCHAR(3)), 3 )
위 세그먼트는 SQL 2005에서 올바른 응답을 생성하지 않습니다.
RIGHT('000' + CAST(@number1 AS NVARCHAR(3)), 3 )
위 세그먼트는 SQL 2005에서 원하는 응답을 생성합니다.
varchar는 원하는 접두사 길이를 즉시 제공합니다. 고정 길이 데이터 유형에 길이 지정 및 조정이 필요한 경우.
답변
나는 사용하고 싶다
DECLARE @Length int
DECLARE @Number int
SET @Length = 9
SET @Number = 4
select right( POWER(10, @Length) + @Number, @Length)
이것은 나에게 준다
000000004
답변
데이터 유형 “int”는 10 자리를 초과 할 수 없습니다. 추가로 “Len ()”함수는 int에서 작동하므로 len () 함수를 호출하기 전에 int를 문자열로 변환 할 필요가 없습니다.
마지막으로, int의 크기> 패딩하려는 총 자릿수 (@intLen) 인 경우를 고려하지 않습니다.
따라서보다 간결하고 정확한 솔루션은 다음과 같습니다.
CREATE FUNCTION rf_f_CIntToChar(@intVal Int, @intLen Int) RETURNS nvarchar(10)
AS
BEGIN
IF @intlen > 20 SET @intlen = 20
IF @intlen < LEN(@intVal) RETURN RIGHT(CONVERT(nvarchar(10), @intVal), @intlen)
RETURN REPLICATE('0', @intLen - LEN(@intVal)) + CONVERT(nvarchar(10), @intVal)
END
답변
별로 우아하지는 않지만 변환하려는 숫자에 원하는 수의 선행 0으로 설정 값을 추가하고 RIGHT 함수를 사용합니다.
예:
SELECT RIGHT(CONVERT(CHAR(7),1000000 + @number2),6)
결과 : ‘000867’