2016-06-13 5 views
0

1588000のような合計のような書式を設定しようとしています。$1,588,000のように見えます。INTでMoneyをフォーマットしようとしましたが、エラーが発生しました:FORMATは認識されない組み込み関数

私が試してみた:

CASE 
    WHEN nb.AmountDollars IS NOT NULL THEN 
      CAST(FORMAT(nb.AmountDollars, '##,##0') AS VARCHAR(50)) 
    ELSE '' 
END  

をしかし、私はエラー取得しています:まだ私はFORMATを使用してstackoverflowの人々に多くの回答を参照してください'FORMAT' is not a recognized built-in function name.

を。

+1

これはSQL Server 2012の構文です。あなたは以前のバージョンでなければなりません。 –

+0

Sql Serverのどのバージョンですか? – JSR

+0

Sql server 2008R2 – Richard77

答えて

0

を支援するための

おかげでここにあなたのための値を分割するために迅速かつ汚いスカラ関数です。

CREATE FUNCTION [dbo].[fn_FormatDollars] 
    (
    @RawValue INT 
    ) 
RETURNS VARCHAR(20) 
AS 
BEGIN 
    DECLARE @FormattedValue VARCHAR(20) 

    IF LEN(@RawValue) > 6 
     BEGIN 
      SELECT 
       @FormattedValue = '$' + 
       LEFT(CAST(@RawValue AS VARCHAR),1) + ',' + 
       SUBSTRING(CAST(@RawValue AS VARCHAR),2,3) + ',' + 
       RIGHT(CAST(@RawValue AS VARCHAR),3) 
     END 
    ELSE 
     BEGIN 
      SELECT 
       @FormattedValue ='$' + 
       SUBSTRING(CAST(@RawValue AS VARCHAR),1,3) + ',' + 
       RIGHT(CAST(@RawValue AS VARCHAR),3) 
     END 

    RETURN @FormattedValue 
END 
GO 

次に、あなたのフィールドで、このようにそれを使用します。

SELECT [dbo].[fn_FormatDollars](nb.[AmountDollars]) 

例:

SELECT [dbo].[fn_FormatDollars](1588000) 

結果:

enter image description here

これは、SQL 2005インスタンスに対して、これを保存するために書きました。

関連する問題