2011-08-01 2 views
1

제로 채우기 정수 :TSQL/MSSQL 선택 - 내가 SQL select 문이

select pk from items 

가 반환

000001 
000002 
000004 
000029 
000008 
987654 
12313232 

그는 :

1 
2 
4 
29 
8 
987654 
12313232 

이제 내 상사가 뭔가를 원한다을 확실히 출력을 6 자릿수로 줄이길 바란다.

나는 pk이 한 자릿수 인 경우에만 작동하는 '00000' + convert(nvarchar(6),pk)과 같은 작업을 시도했습니다. 어떻게해야하는지 알고 있습니까? 조건문을 사용해야합니까?

+0

@nik? 내 Windows Forms 보고서 (.rdlc)에서 사용하고 DataSet (.xsd)도 사용합니다 – dpp

+0

"000000"을 사용하면 형식 문자열의 숫자가 6 자리 이상이됩니다. 0을 더하면 더 적습니다. – niktrs

+1

Don ' 보고 서비스를 통해 무언가가 수행 될 수 있다면 SQL 코드에 오버 헤드를 추가하지 마십시오. – niktrs

답변

3

보통 6 자리 숫자보다 더 많은 값을 가지고이

RIGHT ('000000' + CONVERT(varchar(6), pk), 6) 

그러나,이

LTRIM(RIGHT (' 000000' + CONVERT(varchar(10), pk), 10)) 

을 시도하지만 당신은 7-9 ​​자리 숫자가 숫자를 처리 할 경우 필요 긴:.

CASE 
    WHEN pk >= 1000000 THEN CONVERT(varchar(10), pk) 
    ELSE RIGHT ('000000' + CONVERT(varchar(6), pk), 6) 
END 
+0

어떻게 6 자리 이상입니까? 또한 캐스트가 내 쿼리에서 작동하지 않습니다. 2008 년 사용하고 있습니다. – dpp

+0

@domanokz : 죄송합니다. 너무 일찍 저장되었습니다. 최신을 보시기 바랍니다 – gbn

+0

나는 정말로 조건문이 필요하다고 생각합니다. 첫 번째와 두 번째 대답이 올바르게 작동하지 않습니다. 어쨌든 고마워. – dpp

관련 문제