SQL 數字轉換英文函式
USE [WWERP]
GO
/****** 物件: UserDefinedFunction [dbo].[fun_currencyENG] 指令碼日期: 08/02/2009 15:58:03 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE FUNCTION [dbo].[fun_currencyENG] (@num numeric(15,2))
RETURNS varchar(400)
AS
BEGIN
DECLARE @i int,@hundreds int,@tenth int,@one int
DECLARE @thousand int,@million int,@billion int
DECLARE @numbers varchar(400),@s varchar(15),@result varchar(400)
SET @numbers='ONE TWO THREE FOUR FIVE '
+'SIX SEVEN EIGHT NINE TEN '
+'ELEN TWELEVE THIRTEEN FOURTEEN FIFTEEN '
+'SIXTEEN SEVENTEEN EIGHTEEN NINETEEN '
+'TWENTY THIRTY FORTY FIFTY '
+'SIXTY SEVENTY EIGHTY NINETY '
SET @s=RIGHT('000000000000000'+CAST(@num AS varchar(15)),15)
SET @billion=CAST(SUBSTRING(@s,1,3) AS int)--將12位整數分成4段:十億、百萬、千、百十個
SET @million=CAST(SUBSTRING(@s,4,3) AS int)
SET @thousand=CAST(SUBSTRING(@s,7,3) AS int)
SET @result=''
SET @i=0
WHILE @i<=3
BEGIN
SET @hundreds=CAST(SUBSTRING(@s,@i*3+1,1) AS int)--百位0-9
SET @tenth=CAST(SUBSTRING(@s,@i*3+2,1) AS int)
SET @one=(CASE @tenth WHEN 1 THEN 10 ELSE 0 END)+CAST(SUBSTRING(@s,@i*3+3,1) AS int)--個位0-19
SET @tenth=(CASE WHEN @tenth<=1 THEN 0 ELSE @tenth END)--十位0、2-9
IF (@i=1 and @billion>0 and (@million>0 or @thousand>0 or @hundreds>0)) or
(@i=2 and (@billion>0 or @million>0) and (@thousand>0 or @hundreds>0)) or
(@i=3 and (@billion>0 or @million>0 or @thousand>0) and (@hundreds>0))
SET @result=@result+', '--百位不是0則每段之間加連線符,
IF (@i=3 and (@billion>0 or @million>0 or @thousand>0) and (@hundreds=0 and (@tenth>0 or @one>0)))
SET @result=@result+' and '--百位是0則加連線符AND
IF @hundreds>0
SET @result=@result+RTRIM(SUBSTRING(@numbers,@hundreds*10-9,10))+' HUNDRED'
IF @tenth>=2 and @tenth<=9
BEGIN
IF @hundreds>0
SET @result=@result+' AND '
SET @result=@result+RTRIM(SUBSTRING(@numbers,@tenth*10+171,10))
END
IF @one>=1 and @one<=19
BEGIN
IF @tenth>0
SET @result=@result+'-'
ELSE
IF @hundreds>0
SET @result=@result+' AND '
SET @result=@result+RTRIM(SUBSTRING(@numbers,@one*10-9,10))
END
IF @i=0 and @billion>0
SET @result=@result+' BILLION'
IF @i=1 and @million>0
SET @result=@result+' MILLION'
IF @i=2 and @thousand>0
SET @result=@result+' THOUSAND'
SET @i=@i+1
END
IF SUBSTRING(@s,14,2)<>'00'
BEGIN
SET @result=@result+' POINT '
IF SUBSTRING(@s,14,1)='0'
SET @result=@result+'ZERO'
ELSE
SET @result=@result+RTRIM(SUBSTRING(@numbers,CAST(SUBSTRING(@s,14,1) AS int)*10-9,10))
IF SUBSTRING(@s,15,1)<>'0'
SET @result=@result+' '+RTRIM(SUBSTRING(@numbers,CAST(SUBSTRING(@s,15,1) AS int)*10-9,10))
END
RETURN(@result+' ONLY')
END
/*
declare @kk varchar(50)
set @kk = dbo.fun_currencyEng(9990)
select @kk as Eng
*/
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16436858/viewspace-611139/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [MSSQL]SQL數字轉英文函式SQL函式
- numtoyminterval函式——數字轉換函式函式
- sql 數字轉換為16進位制數函式SQL函式
- 英文月份和數字月份轉換
- Python 英文的月份轉數字及數字轉英文Python
- js利用Number()函式將字串轉換為數字JS函式字串
- sql server 資料型別轉換函式SQLServer資料型別函式
- SQL Server 內建轉換函式介紹SQLServer函式
- Sql Server 資料型別 轉換 函式SQLServer資料型別函式
- Sql Server資料型別轉換函式SQLServer資料型別函式
- 浮點數轉換成字串函式字串函式
- 轉換函式函式
- 字串與數字轉換函式 | 全方位認識 sys 系統庫字串函式
- 聚合函式與數字函式函式
- 字元函式、數字函式和日期函式字元函式
- Sql Server系列:資料型別轉換函式SQLServer資料型別函式
- 【SQL 分析函式】wm_concat 行列轉換SQL函式
- Sql Server函式全解(3):資料型別轉換函式和文字影象函式SQLServer函式資料型別
- Sql Server函式全解(三)資料型別轉換函式和文字影像函式SQLServer函式資料型別
- sql隱式轉換SQL
- mysql 字串和數字比,字串會隱式轉換為數字0MySql字串
- ORACLE SQL函式中文漢字轉拼音首字母OracleSQL函式
- [轉]SQL獲取漢字拼音首字母函式SQL函式
- MySQL 數字函式大全MySql函式
- 資料庫SQL語言最常用的數字函式資料庫SQL函式
- 類的轉換函式函式
- php轉換ip函式PHP函式
- js日期轉換函式JS函式
- SQL SERVER 數學函式SQLServer函式
- JavaScript字串轉換數字JavaScript字串
- Oracle OCP(03):字元函式、數字函式和日期函式Oracle字元函式
- 函式式 Java 到函式式 Kotlin 的轉換函式JavaKotlin
- oracle 10g函式大全--轉換函式Oracle 10g函式
- 函式組:TRUX 包含很多的轉換函式函式UX
- 取漢字全拼的SQL函式SQL函式
- Sql Server函式全解(2):數學函式SQLServer函式
- 中文數字阿拉伯數字相互轉換
- PHP資料型別轉換(字元轉數字,數字轉字元)PHP資料型別字元