例:输入12345,程序给出:壹万贰仟叁佰肆拾伍
例:输入10023040,程序给出:壹仟另贰万叁仟另肆拾

解决方案之一(在SqlServer2000中测试通过):
CREATE FUNCTION fun_cgnum
(@num INT)
RETURNS VARCHAR(100)
AS
BEGIN
DECLARE @temp INT,@res INT,@i TINYINT
DECLARE @str VARCHAR(100),@no VARCHAR(20),@unit VARCHAR(16)
SELECT @str='',@no='另壹贰叁肆伍陆柒捌玖',@unit='拾佰仟万拾佰仟亿'
SET @temp=@num
SELECT @i=0,@res=@temp%10,@temp=@temp/10
WHILE @temp>0
BEGIN
IF @i=0
SET @str=SUBSTRING(@no,@res+1,1)
ELSE
SET @str=SUBSTRING(@no,@res+1,1)+SUBSTRING(@unit,@i,1)+@str
SELECT @res=@temp%10,@temp=@temp/10
SET @i=@i+1
END
SET @str=SUBSTRING(@no,@res+1,1)+SUBSTRING(@unit,@i,1)+@str
SET @str=REPLACE(@str,'另拾','另')
SET @str=REPLACE(@str,'另佰','另')
SET @str=REPLACE(@str,'另仟','另')
SET @str=REPLACE(@str,'另拾','另')
SET @str=REPLACE(@str,'另万','万')
WHILE @i>0
BEGIN
SET @str=REPLACE(@str,'另另','另')
SET @i=CHARINDEX('另另',@str)
END
SET @str=REPLACE(@str,'另万','万')
SET @str=REPLACE(@str,'亿万','亿')
IF RIGHT(@str,1)='另'
SET @str=LEFT(@str,LEN(@str)-1)
RETURN @str
END
GO

--测试:有0和没有0的情况
SELECT dbo.fun_cgnum(900000000),dbo.fun_cgnum(903002051),dbo.fun_cgnum(903002050)

PS:有兴趣的朋友可以继续考虑有小数点以及添加单位(元/角/分)的情况

更多相关文章

  1. android中文api(89)——ViewManager
  2. Android(安卓)中文API(86)——ResourceCursorAdapter
  3. Android中文API(144) —— JsonWriter
  4. android 中文api (62) —— ViewSwitcher.ViewFactory
  5. android api 中文 (74)—— AdapterView.AdapterContextMenuInfo
  6. Android(安卓)中文 API (27) —— SeekBar.OnSeekBarChangeListene
  7. [RK3399][Android7.1] 调试笔记 --- 设置搜狗为开机默认输入法
  8. Android(安卓)中文 API (35) —— ImageSwitcher
  9. Android(安卓)中文 SDK (47) —— Filter

随机推荐

  1. php单例模式 使用场景和使用方法
  2. 学习PHP死循环写法和作用
  3. PHP 简单实现延时操作
  4. 详细解读PHP中return用法(附代码)
  5. PHP yield 协程 生成器用法的了解
  6. Go,PHP,Swoole 并发测试详解
  7. php快速实现联系客服(在线咨询)
  8. PHP开发自己的框架,你必须知道这些知识点!
  9. 分享一个PHP基本语法的心得
  10. 认识在 macOS 下使用 PHP-version 切换 P