선행 및 후행 0을 모두 제거하고 결과를 소수점 두 자리에 표시하고 싶습니다. 예 : 숫자가 0.01이면 .01을보고 싶습니다. 숫자가 0.010이면 .01을보고 싶습니다. 숫자가 0.10이면 .10을보고 싶습니다. 숫자가 1이면 1.00을보고 싶습니다.
나는 FORMAT
기능 을 사용할 것 입니다. 예를 들면 :
SELECT FORMAT (0.090, '#.######')
.09를 표시하면 잘 작동합니다.
그러나 1보다 큰 값에 대해 동일한 문을 사용하면 소수점 이하 자릿수가 표시되지 않습니다.
예를 들면 :
SELECT FORMAT (10, '#.######')
10.00을 예상하는 동안 10을 제공합니다.
나는 CASE
이것을 헛되이 해결하기 위해 진술 을 사용하려고 노력했다 . case 문은 1보다 큰 값에 대해 잘 작동하지만 선행 0을 제거하지 않습니다.
DECLARE @a float = 10
SELECT
CASE
WHEN @a <1 THEN format (@a, '#.######')
ELSE CAST(FORMAT(@a, '#.######') AS money)
END
예상대로 10.00을 제공합니다. 그러나 예를 들어 @a의 값이 0.090이면 0.09를 제공하고 .09를 기대합니다.
후행 및 선행 0을 모두 제거하고 결과를 소수점 이하 두 자리로 표시 할 수있는 방법이 있습니까? 어떤 가이드라도 대단히 감사합니다.
'포맷은 디스플레이 레이어의 책임'이라는 D Stanley의 의견에 동의하지만 때로는 저장 프로 시저 또는 기타 함수 내에서 사용하려면 더러운 함수가 필요하다는 것을 알고 있습니다. 이것을 시도하십시오 :
CREATE FUNCTION dbo.toStr(@a float)
RETURNS varchar(12)
AS
BEGIN
DECLARE @ret varchar(12)
SELECT @ret =
CASE
WHEN @a < 1 THEN replace(format(@a, '.##'), '0.','.')
ELSE FORMAT(@a, '#.00')
END
RETURN @ret
END;
다음 값으로 테스트했습니다.
select dbo.toStr(0.090); -- .09
select dbo.toStr(1.09); -- 1.09
select dbo.toStr(10.00); -- 10.00
select dbo.toStr(1.2); -- 1.20
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다