sql >> データベース >  >> RDS >> Sqlserver

SQLサーバーで数字を単語に変換できる組み込み関数はありますか

    関数 Util_ToWords があります 、SQL# の無料版 私が書いた SQLCLR ライブラリはこれを行います (まあ、「dollar(s)」と「cents」という単語は追加しません):

    SELECT SQL#.Util_ToWords(10); -- Ten
    SELECT SQL#.Util_ToWords(100); -- One Hundred
    SELECT SQL#.Util_ToWords(1000); -- One Thousand 
    SELECT SQL#.Util_ToWords(120.20); -- One Hundred Twenty and 20
    SELECT SQL#.Util_ToWords(212); -- Two Hundred Twelve
    SELECT SQL#.Util_ToWords(123097.4);-- One Hundred Twenty Three Thousand, Ninety Seven and 40
      

    次の例では、"dollar(s)" と "cents" という単語を戻り値に挿入します (これはもともと小切手に印刷するためのものでした):

    DECLARE @Amount MONEY = 2.08;
    
    ;WITH cte AS
    (
      SELECT N' dollar' + CASE WHEN @Amount >= 1.00 AND @Amount < 2.00 THEN N''
                  ELSE N's'
             END AS [Currency],
             SQL#.Util_ToWords(@Amount) AS [Words]
    )
    SELECT CASE CHARINDEX(N' and ', cte.[Words])
               WHEN 0 THEN cte.[Words] + cte.[Currency]
               ELSE STUFF(cte.[Words], CHARINDEX(N' and ', cte.[Words]), 0, cte.[Currency])
                    + N' cents'
           END
    FROM cte;
      

    返品:

    Two dollars and 08 cents
      

    1. テーブルの幅が広すぎてMarkdownで生成されたPDFに収まらない

    2. PostgreSQLでデータベースのコピーを作成する

    3. 図書館プロジェクトでのRoomDBの使用

    4. グリッドビューにmysqlを取り込む方法は?