sql >> Databáze >  >> RDS >> Sqlserver

Existuje vestavěná funkce, která dokáže převést čísla na slova na serveru SQL

Existuje funkce Util_ToWords , ve bezplatné verzi SQL# Knihovna SQLCLR, kterou jsem napsal a která to dělá (dobře, bez přidaných slov „dolar(y)“ a „centy):

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

Následující příklad vkládá slova „dolar(y)“ a „centy“ do návratové hodnoty (která byla původně určena pro tisk na šeky):

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;

Vrátí:

Two dollars and 08 cents


  1. Dotazování PostgreSQL pro sestavu Open-High-Low-Close (OHLC).

  2. Jak najdu uloženou proceduru obsahující <text>?

  3. MySQL:jedinečné pole musí být index?

  4. Klíčové slovo není podporováno:'metadata' + MySQL