Hi! Could we please enable some services and cookies to improve your experience and our website?

SQLize | PHPize | SQLtest

Online Sandbox for SQL and PHP: Write, Run, Test, and Share SQL Queries and PHP Code

A A A
Login    Share code      Blog   FAQ
Copy Format Clear
CREATE FUNCTION dbo.ConvertToVietnameseDongWords (@number DECIMAL(18,2)) RETURNS NVARCHAR(1000) AS BEGIN DECLARE @result NVARCHAR(1000) = '' DECLARE @integerPart INT = FLOOR(@number) DECLARE @decimalPart INT = (@number - @integerPart) * 100 -- 定义数字对应的越南语单词 DECLARE @units TABLE (num INT, word NVARCHAR(20)) INSERT INTO @units VALUES (0, N'không'), (1, N'một'), (2, N'hai'), (3, N'ba'), (4, N'bốn'), (5, N'năm'), (6, N'sáu'), (7, N'bảy'), (8, N'tám'), (9, N'chín') DECLARE @tens TABLE (num INT, word NVARCHAR(20)) INSERT INTO @tens VALUES (10, N'mười'), (20, N'hai mươi'), (30, N'ba mươi'), (40, N'bốn mươi'), (50, N'năm mươi'), (60, N'sáu mươi'), (70, N'bảy mươi'), (80, N'tám mươi'), (90, N'chín mươi') DECLARE @placeValues TABLE (place INT, word NVARCHAR(20)) INSERT INTO @placeValues VALUES (1000000, N'triệu'), (1000, N'nghìn'), (100, N'trăm'), (10, N'mươi'), (1, N'') -- 处理整数部分 IF @integerPart > 0 BEGIN -- 处理百万部分 IF @integerPart >= 1000000 BEGIN DECLARE @millions INT = @integerPart / 1000000 SET @result = @result + (SELECT word FROM @units WHERE num = @millions) + N' triệu ' SET @integerPart = @integerPart % 1000000 END -- 处理千部分 IF @integerPart >= 1000 BEGIN DECLARE @thousands INT = @integerPart / 1000 IF @thousands > 0 BEGIN -- 处理百位 DECLARE @hundreds INT = @thousands / 100 IF @hundreds > 0 SET @result = @result + (SELECT word FROM @units WHERE num = @hundreds) + N' trăm ' -- 处理十位和个位 DECLARE @tensAndOnes INT = @thousands % 100 IF @tensAndOnes > 0 BEGIN IF @tensAndOnes < 10 SET @result = @result + (SELECT word FROM @units WHERE num = @tensAndOnes) + N' ' ELSE IF @tensAndOnes < 20 SET @result = @result + N'mười ' + (SELECT word FROM @units WHERE num = @tensAndOnes % 10) + N' ' ELSE BEGIN DECLARE @tensPart INT = (@tensAndOnes / 10) * 10 DECLARE @onesPart INT = @tensAndOnes % 10 SET @result = @result + (SELECT word FROM @tens WHERE num = @tensPart) + ' ' IF @onesPart > 0 SET @result = @result + (SELECT word FROM @units WHERE num = @onesPart) + N' ' END END SET @result = @result + N'nghìn ' END SET @integerPart = @integerPart % 1000 END -- 处理百位 IF @integerPart >= 100 BEGIN DECLARE @hundred INT = @integerPart / 100 SET @result = @result + (SELECT word FROM @units WHERE num = @hundred) + N' trăm ' SET @integerPart = @integerPart % 100 END -- 处理十位和个位 IF @integerPart > 0 BEGIN IF @integerPart < 10 SET @result = @result + (SELECT word FROM @units WHERE num = @integerPart) + N' ' ELSE IF @integerPart < 20 SET @result = @result + N'mười ' + (SELECT word FROM @units WHERE num = @integerPart % 10) + N' ' ELSE BEGIN DECLARE @ten INT = (@integerPart / 10) * 10 DECLARE @one INT = @integerPart % 10 SET @result = @result + (SELECT word FROM @tens WHERE num = @ten) + ' ' IF @one > 0 SET @result = @result + (SELECT word FROM @units WHERE num = @one) + N' ' END END SET @result = @result + N'đô la Mỹ' END ELSE BEGIN SET @result = N'không đô la Mỹ' END -- 处理小数部分 IF @decimalPart > 0 BEGIN SET @result = @result + N' và ' -- 处理十位和个位 IF @decimalPart < 10 SET @result = @result + N'không mươi ' + (SELECT word FROM @units WHERE num = @decimalPart) + N' ' ELSE IF @decimalPart < 20 SET @result = @result + N'mười ' + (SELECT word FROM @units WHERE num = @decimalPart % 10) + N' ' ELSE BEGIN DECLARE @decimalTen INT = (@decimalPart / 10) * 10 DECLARE @decimalOne INT = @decimalPart % 10 SET @result = @result + (SELECT word FROM @tens WHERE num = @decimalTen) + ' ' IF @decimalOne > 0 SET @result = @result + (SELECT word FROM @units WHERE num = @decimalOne) + N' ' END SET @result = @result + N'xu' END -- 清理多余的空格 SET @result = REPLACE(REPLACE(REPLACE(@result, ' ', ' '), ' ', ' '), ' ', ' ') SET @result = RTRIM(LTRIM(@result)) -- 首字母大写 SET @result = UPPER(LEFT(@result, 1)) + SUBSTRING(@result, 2, LEN(@result)) RETURN @result END

Stuck with a problem? Got Error? Ask AI support!

Copy Clear