Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Apakah ada fungsi bawaan yang dapat mengubah angka menjadi kata-kata di server sql

Ada fungsi, Util_ToWords , dalam versi gratis SQL# Pustaka SQLCLR yang saya tulis yang melakukan ini (yah, tanpa kata "dolar(s)" dan "sen" ditambahkan):

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

Contoh berikut memasukkan kata "dollar(s)" dan "cents" ke dalam nilai kembalian (yang awalnya dimaksudkan untuk dicetak pada cek):

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;

Pengembalian:

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. Karena tidak ada parameter array Sqlserver, apa cara terbaik untuk melanjutkan?

  2. Kesalahan nama kolom yang ambigu pada satu server tertentu

  3. Metode SqlDataAdapter.Fill lambat

  4. nvarchar(max) masih terpotong

  5. Dapper.NET dan proc tersimpan dengan beberapa set hasil