在SQL service或Oracle中将数字转换成有千位符号
2015-08-11 09:42
501 查看
1、在SQL service中的写法:
--Function主体 CREATE FUNCTION [dbo].[FnMoneyStyle](@Number float,@strType char(1)) RETURNS VARCHAR(100) AS BEGIN DECLARE @ReturnValue varchar(100) SET @ReturnValue=0 SET @Number=ISNULL(@Number,0) --千分 IF @strType = '1' --千分 无小数点 SET @ReturnValue= left(convert(varchar,convert(money,@Number),1),len(convert(varchar,convert(money,@Number),1))-3) IF @strType = '2' --千分 两位小数点 SET @ReturnValue= convert(varchar,convert(money,@Number),1) IF @strType = '5' --千分 两位小数点 去掉.00 SET @ReturnValue=REPLACE(convert(varchar,convert(money,@Number),1),'.00', '') --非千分 IF @strType = '3' --四位小数 SET @ReturnValue= convert(varchar,convert(money,@Number),2) IF @strType = '4' --去掉.00 SET @ReturnValue=REPLACE(convert(varchar,convert(money,@Number)),'.00', '') RETURN @ReturnValue END --Function测试结果: SELECT dbo.FnMoneyStyle(300000.00,1)--返回结果:300,000 SELECT dbo.FnMoneyStyle(300000.00,2)--返回结果:300,000.00 SELECT dbo.FnMoneyStyle(300000.00,3)--返回结果:300000.0000 SELECT dbo.FnMoneyStyle(300000.00,4)--返回结果:300000
2、在Oracle中的写法:
--function主体: create or replace function FnMoneyStyle ( fNumber float, strType varchar2 ) return varchar2 as ReturnValue varchar2(4000):=0; begin --千分 IF strType = '1' THEN --千分 无小数点 SELECT SUBSTR ( TRIM(DECODE(fNumber,0,'0.00',TO_CHAR(fNumber,'999,999,999,999,999.99'))) ,1 ,LENGTH(TRIM(DECODE(fNumber,0,'0.00',TO_CHAR(fNumber,'999,999,999,999,999.99'))))-3 ) INTO ReturnValue FROM DUAL; END IF; IF strType = '2' THEN --千分 两位小数点 SELECT TRIM(DECODE(fNumber,0,'0.00',TO_CHAR(fNumber,'999,999,999,999,999.99'))) INTO ReturnValue FROM DUAL; END IF; IF strType = '5' THEN --千分 两位小数点 去掉.00 SELECT REPLACE ( TRIM(DECODE(fNumber,0,'0.00',TO_CHAR(fNumber,'999,999,999,999,999.99'))) ,'.00' ,'' ) INTO ReturnValue FROM DUAL; END IF; --非千分 IF strType = '3' THEN --四位小数 SELECT TRIM(DECODE(fNumber,0,'0.0000',TO_CHAR(fNumber,'9999999999999999999999999.9999'))) INTO ReturnValue FROM DUAL; END IF; IF strType = '4' THEN --去掉.00 SELECT REPLACE ( TRIM(DECODE(fNumber,0,'0.00',TO_CHAR(fNumber,'9999999999999999999999999.99'))) ,'.00' ,'' ) INTO ReturnValue FROM DUAL; END IF; dbms_output.put_line(ReturnValue); return(ReturnValue); end FnMoneyStyle; --function测试结果: SELECT FnMoneyStyle(30000.123,'1') FROM DUAL--返回结果:30,000 SELECT FnMoneyStyle(30000.123,'2') FROM DUAL--返回结果:30,000.12 SELECT FnMoneyStyle(30000.123,'3') FROM DUAL--返回结果:30000.1230 SELECT FnMoneyStyle(30000.123,'4') FROM DUAL--返回结果:30000.12 SELECT FnMoneyStyle(30000.123,'5') FROM DUAL--返回结果:30,000.12
相关文章推荐
- Oracle 基础篇 --- 索引选项
- Oracle修改默认字符编码
- 深入解析Oracle学习笔记(第四章)
- Oracle查询数据库中所有表的记录数
- ORACLE FORMS Builder 设置栏位背景颜色
- mysql和oracle的一个汉字占几个字符
- oracle 常见名词及辨析
- 【Oracle】PL/SQL实现打印1-100中的素数
- oracle 11g数据库安全加固注意事项
- oracle死锁解决方法
- Oracle EBS FSG报表迁移
- oracle几种关闭方式实验
- C# 读取oracle 中文乱码的解决方案
- Mac下Oracle Client的安装
- Oracle performance tuning
- Oracle Error Handling(Oracle 异常处理)
- 在ibatis中使用oracle insert all 函数
- linux环境下如何对oracle数据库进行整库备份
- oracle易错易混知识点小记
- oracle学习笔记:;连接查询(内连接的等值连接和非等值连接,外链接的左外、右外及全外链接)