2017-04-19 1 views
0

제 질문은 상당히 간단합니다. 나는 929.77로 저장되어있는 SQL의 값을 쿼리하고 있지만 항상 11 자리가되도록 열이 있어야합니다. 따라서 00000092977로 표시되도록 값을 가져 오려고합니다. 바로 지금과는 정반대입니다. 92977000000을 당기고 있습니다.왼쪽 맞춤 9.2 SQL 선택 SQL Server 2012

미리 감사드립니다.

LEFT(REPLACE(Cast(ISNULL(c2.preinjwage,0) as varchar), '.', '') + '0000000000',11) as 'wage' 
+0

음 ... 0이 잘못된쪽에 있다면 다른면으로 전환하고 대신 오른쪽을 사용 했습니까 ??? –

답변

2

반대 :

RIGHT('0000000000'+REPLACE(Cast(ISNULL(c2.preinjwage,0) as varchar(12)), '.', ''),11) as 'wage' 

빠른 검사 :

declare @in decimal(9,2)='929.77' 

select right('0000000000'+replace(Cast(isnull(@in,0) as varchar(12)), '.', ''),11) as 'wage' 

rextester 데모 : http://rextester.com/GTGSJ72810

반환 :

,
+-------------+ 
| wage  | 
+-------------+ 
| 00000092977 | 
+-------------+ 
+0

완벽한! 고맙습니다! – Dizzle

+0

@Dizzle 도와 드리겠습니다! – SqlZim

1

항상 소수점 이하 두 자리를 가지고 있다고 가정 (같은 소수의 자리수는 1.11, 111을 구별하지 않으므로 제안 형식이 이해가되지 않습니다 변화 할 수있는 경우)

당신도 사용할 수 있습니다

SELECT FORMAT(CAST(ISNULL(c2.preinjwage,0) * 100 AS INT), 'd11')