文档介绍:金额小写转大写 sql函数
1.
set ANSI_NULLS ON
set QUOTED_IDENTIFIER ON
GO
--功能: 用于将小写的数值翻译成大写的字符串(支持到分,即小数点后两位)
--入口参数:***@um------数字型变量
--返回:字符串
--举例:select ()
-- 结果为“陆佰贰拾叁元捌角捌分”
ALTER FUNCTION [dbo].[fn_ChnMoney_New](***@um decimal(18,2))
RETURNS varchar(200)
AS
BEGIN
DECLARE ***@chvNum varchar(200)
DECLARE ***@chvMoney varchar(200)
DECLARE ***@chvTemp varchar(200)
DECLARE ***@intIntLen int
DECLARE ***@intI int
DECLARE ***@chvTempI varchar(200)
DECLARE ***@chvReturn varchar(200)
DECLARE ***@sFsFlag int
SET ***@sFsFlag = 0
IF ***@um=0
SET ***@chvMoney = '零'
Else
BEGIN
IF ***@um<0
BEGIN
SET ***@sFsFlag = 1
SET ***@um = ABS(***@um)
END
SET ***@chvTemp=convert(varchar(200),Round(***@um*100,0))
IF charindex('.',***@chvTemp,1)>0
SET ***@chvNum=left(***@chvTemp,charindex('.',***@chvTemp,1)-1)
ELSE
SET ***@chvNum=***@chvTemp
SET ***@intIntLen=len(***@chvNum)
SET ***@chvMoney=''
Set ***@chvReturn = ''
SET ***@intI=1
WHILE ***@intI <= ***@intIntLen
BEGIN
SET ***@chvTempI = substring(***@chvNum,***@intIntLen-***@intI+1,1)
SET ***@chvMoney = substring('零壹贰叁肆伍陆柒捌玖',convert(int,***@chvTempI)+1,1) + substring('分角元拾佰仟万拾佰仟亿拾佰仟兆拾佰仟京拾佰仟',(***@intI-1)+1,1)
SET ***@intI = ***@intI + 1
SET ***@chvReturn = ***@chvMoney + ***@chvReturn
END
END
SET ***@chvReturn=Replace(***@chvReturn,'零仟','零')
SET ***@chvReturn=Replace(***@chvReturn,'零佰','零')
SET ***@chvReturn=Replace(***@chvReturn,'零拾','零')
while charindex('零零',***@chvReturn,1)>