sql >> Database >  >> RDS >> Sqlserver

Is er een ingebouwde functie die getallen kan omzetten in woorden in de sql-server?

Er is een functie, Util_ToWords , in de gratis versie van de SQL# SQLCLR-bibliotheek die ik heb geschreven die dit doet (nou ja, zonder de woorden "dollar(s)" en "cents" toegevoegd):

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

In het volgende voorbeeld worden de woorden "dollar(s)" en "cent" in de retourwaarde ingevoegd (die oorspronkelijk bedoeld was om op cheques af te drukken):

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;

Retourneren:

Two dollars and 08 cents


  1. Kan kardinaliteit verschillen voor dubbele indexen in mysql?

  2. Meerdere MySQL-instructies uitvoeren via JDBC-sampler in JMeter

  3. Ik wil gegevens invoegen in de mysql-database met behulp van PDO van PHP. Maar de gegevens zijn niet ingevoegd

  4. SSHTunnelForwarder gebruiken om via SSH verbinding te maken met een MySQL-database