Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Има ли вградена функция, която може да конвертира числата в думи в sql сървъра

Има функция Util_ToWords , в безплатната версия на SQL# Библиотека SQLCLR, която написах, че прави това (е, без добавените думи „долар(и)“ и „центове“):

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

Следният пример инжектира думите „долар(и)“ и „центове“ в върнатата стойност (която първоначално е била предназначена за отпечатване върху чекове):

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Върнете текущото име за влизане в SQL Server (T-SQL)

  2. Какво е скаларен UDF в SQL Server?

  3. Как да получите списък с всички ограничения за проверка в базата данни на SQL Server - SQL Server / TSQL урок, част 85

  4. Как да избегнем грешката при деление на нула в SQL?

  5. Как да премахнете HTML тагове от низ в SQL Server?