2016-11-30 5 views
2

쿼리에 달러 범위를 표시해야하지만 값을 연결하면 출력에서 ​​쉼표가 손실됩니다.돈을 텍스트로 변환하고 형식을 유지하십시오.

select 
'$'||CAST(ROUND(MIN(db.INITIAL_BALANCE),-1) AS money) 
||' to '|| 
'$'||CAST(ROUND(MAX(db.INITIAL_BALANCE),-1) AS money) AS Balance_Range 

출력이에 $ (2060) $ 73,690

원하는 출력 $ 2,060에서 $ 73,690

어떤 제안에 입니까?

Intersystems에서 캐시 당신도 쉼표을 한 것으로,

답변

1
'$'||TRIM(tochar(MIN(db.Account_Balance),'9,999,999'))|| ' to ' ||'$'||TRIM(tochar(max(db.Account_Balance),'9,999,999')) 

내가 .. 감사합니다 필요 무엇을 내게 준!

1

왜 당신이 생각 내 데이터베이스입니다?
documentation은 서식 값에 대해 아무 말도하지 않습니다.

MONEY 및 SMALLMONEY는 통화 숫자 데이터 유형입니다. 통화 데이터 유형에 대한 규모는

내가 보는 것처럼

을 예상대로이 쿼리가 적어도 그것을 수행하는 방법은 두 가지가 있습니다, 123123.0000를 반환합니다 항상 4

SELECT CAST('123123' AS money) 

입니다.

  • 예를 들어 %Currency과 같은 사용자 고유의 데이터 유형을 정의하십시오. 여기서 스케일 번호와 형식을 변경할 수 있습니다. 그러나 모든 클래스에서 필요에 따라 모든 속성을이 유형으로 변경해야합니다.
  • 또는 새 SQL 함수를 정의하여 필요에 따라 모든 숫자를 형식화 할 수 있습니다. 다음과 같은

뭔가 :

Class Sample.Utils Extends %RegisteredObject 
{ 

ClassMethod ToMoney(pValue As %Integer = 0) As %String [ SqlProc, SqlName= "TO_MONEY"] 
{ 
    quit "$ " _ $fnumber(pValue, ",", 2) 
} 

} 

그리고 쿼리 SELECT Sample.TO_MONEY(1234567)가 반환됩니다 $ 1,234,567.00