- [C#] Ẩn ứng dụng winform từ Apps vào Background Process trên Task Manager
- [SQLSERVER] Xử lý ngoại lệ sử dụng TRY...CATCH và RAISEERROR
- [C#] Bắt sự kiện bàn phím chuột bên ngoài ứng dụng winform sử dụng thư viện MouseKeyHook
- [DEVEXPRESS] Đặt mật khẩu và bỏ mật khẩu tập tin file PDF
- [C#] Thêm ứng dụng vào Taskbar sử dụng SharpShell DeskBand
- [C#] Hướng dẫn thêm text vào hình ảnh icon winform
- [C#] Chia sẽ tổng hợp source code đồ án về Csharp
- [C#] Hướng dẫn viết ứng dụng quay màn hình video winform, Screen Recorder
- [C#] Hướng dẫn sử dụng thư viện Input Simulator để làm việc với Keyboard, Mouse Virtual
- [DEVEXPRESS] Hướng dẫn tích Filter Contain khi click chuột phải vào cell selection trên Gridview
- [C#] Tra cứu mã số thuế cá nhân bằng CMND hoặc CCCD
- [C#] Convert hình ảnh image thành Blurhash sử dụng trong loading image winform
- [POWERSHELL] Script sao lưu backup và nén database sqlserver
- [C#] Giới thiệu thư viện Autofac Dependency Injection
- [C#] Hướng dẫn tạo Windows Services đơn giản Winform
- [C#] Một click chuột điều khiển máy tính từ xa sử dụng Ultraviewer
- Hướng dẫn đóng gói phần mềm sử dụng Powershell biên dịch script thành file exe
- [C#] Hướng dẫn sử dụng Task Dialog trên NET 5
- [C#] Hướng dẫn xem lịch sử các trang web đã truy cập trên Chrome Browser
- [C#] Hướng dẫn lấy thông tin Your ID và Password của Ultraviewer Winform
[SQLSERVER] Chia sẽ hàm đọc số thành chữ Tiếng Anh
Xin chào các bạn, bài viết hôm nay mình sẻ tiếp tục chia sẽ đến các bạn hàm đọc số thành chữ tiếng anh trong cơ sở dữ liệu SQLSERVER.
[SQLSERVER] Convert number to word English
Các bạn tạo một hàm Scalar Funcition fn_docsothanhchu_EN
với code như bên dưới đây:
Ví dụ: khi nhập vào số 1985236000
Sẽ trả về cho chúng ta kết quả bằng chữ tiếng Anh: One billion nine hundred eighty five million two hundred thirty six thousand
Trong hàm này, có một bảng NumberEnglish dùng để làm bản dò.
Sau khi, tạo hàm xong các bạn thực hiện câu lệnh như sau:
SELECT dbo.fn_docsothanhchu_EN(1985236000)
Kết quả trả về:
SET QUOTED_IDENTIFIER ON;
SET ANSI_NULLS ON;
GO
CREATE FUNCTION dbo.fn_docsothanhchu_EN
(
@amount FLOAT
)
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @NumberEnglish TABLE
(
[NumberValue] INT,
[NumberString] VARCHAR(100)
);
INSERT INTO @NumberEnglish
(
[NumberValue],
[NumberString]
)
VALUES
(0, ''),
(1, 'One'),
(2, 'Two'),
(3, 'Three'),
(4, 'Four'),
(5, 'Five'),
(6, 'Six'),
(7, 'Seven'),
(8, 'Eight'),
(9, 'Nine'),
(10, 'Ten'),
(11, 'Eleven'),
(12, 'Twelve'),
(13, 'Thirteen'),
(14, 'Fourteen'),
(15, 'Fifteen'),
(16, 'Sixteen'),
(17, 'Seventeen'),
(18, 'Eighteen'),
(19, 'Nineteen'),
(20, 'Twenty'),
(30, 'Thirty'),
(40, 'Forty'),
(50, 'Fifty'),
(60, 'Sixty'),
(70, 'Seventy'),
(80, 'Eighty'),
(90, 'Ninety'),
(100, 'One Hundred'),
(1000, 'Thousand'),
(1000000, 'Million'),
(1000000000, 'Billion');
DECLARE @orig_amt FLOAT;
DECLARE @factor FLOAT;
DECLARE @str_amount VARCHAR(500);
DECLARE @mod INT;
SET @orig_amt = @amount;
SET @factor = 1000000000;
SET @str_amount = '';
WHILE @amount > 0.00
BEGIN
IF @amount > 0.0
AND @amount < 1.0
BEGIN
IF @str_amount <> ''
SET @str_amount = @str_amount + ' and ';
SET @str_amount = @str_amount + CONVERT(VARCHAR, CONVERT(INT, @amount * 100)) + '/100';
SET @amount = 0.00;
END;
ELSE
BEGIN
SET @mod = CONVERT(INT, @amount) / @factor;
IF @mod <= 20
BEGIN
SELECT @str_amount = @str_amount + ' ' + NumberString
FROM @NumberEnglish
WHERE NumberValue = @mod;
END;
IF @mod > 20
AND @mod <= 99
BEGIN
SELECT @str_amount = @str_amount + ' ' + NumberString
FROM @NumberEnglish
WHERE NumberValue = (@mod / 10) * 10;
SELECT @str_amount = @str_amount + ' ' + NumberString
FROM @NumberEnglish
WHERE NumberValue = @mod % 10;
END;
IF @mod > 99
BEGIN
SELECT @str_amount = @str_amount + ' ' + NumberString + ' Hundred'
FROM @NumberEnglish
WHERE NumberValue = @mod / 100;
IF @mod % 100 <= 20
BEGIN
SELECT @str_amount = @str_amount + ' ' + NumberString
FROM @NumberEnglish
WHERE NumberValue = @mod % 100;
END;
ELSE
BEGIN
SELECT @str_amount = @str_amount + ' ' + NumberString
FROM @NumberEnglish
WHERE NumberValue = (@mod % 100 / 10) * 10;
SELECT @str_amount = @str_amount + ' ' + NumberString
FROM @NumberEnglish
WHERE NumberValue = @mod % 10;
END;
END;
IF @factor > 1
AND @str_amount <> ''
BEGIN
SELECT @str_amount = @str_amount + ' ' + NumberString
FROM @NumberEnglish
WHERE NumberValue = @factor;
END;
SELECT @amount = @amount - @factor * @mod;
IF @str_amount <> ''
AND @amount >= 1.0
AND @factor > 1
SELECT @str_amount = @str_amount + ',';
SET @factor = @factor / 1000;
END;
END;
IF @str_amount = ''
SET @str_amount = 'Zero';
SET @str_amount = REPLACE(LTRIM(@str_amount), ' ', ' ');
SET @str_amount = REPLACE(LTRIM(@str_amount), ', ', ' ');
SET @str_amount = LOWER(@str_amount);
IF @str_amount <> ''
SET @str_amount = UPPER(LEFT(@str_amount, 1)) + RIGHT(@str_amount, LEN(@str_amount) - 1);
RETURN (@str_amount);
END;
GO
Thanks for watching!