oracle 函数(function) NANVL的扩展,语法笔记
来源:互联网 发布:淘宝装修比较好的店铺 编辑:程序博客网 时间:2024/05/16 02:22
先吐槽一波,现在开发一个使用中的后台,其中有多个金额字段的类型是varchar2,并且里面有非数字字段,导致我累加的时候会报错.
并且没有很好的办法解决,为什么其他办法不好解决先不谈.我准备写一个oracle函数,来解决问题.
需求很简单,伪代码写下来
public Number myNanvl(String str, Number defaultValue){ //如果是数字 返回本身数字 if(isNaN(str){ return to_number(str); } //如果不是数字,返回默认值 return defaultValue;}
oracle并没有找到合适的isNaN函数,所以用
regexp_replace(str,'^[-\+]?\d+(\.\d+)?$','') IS NOT NULL
替代一下.
最终代码是这样的
CREATE OR REPLACE FUNCTION "myNanvl"(str VARCHAR2, defaultValue NUMBER) RETURN NUMBER ASBEGIN IF regexp_replace(str,'^[-\+]?\d+(\.\d+)?$','') IS NOT NULL THEN return defaultValue; END IF; RETURN "TO_NUMBER"(str);END;
测试结果
select "myNanvl"('12.12.12', 0) from dual--返回0select "myNanvl"('NaN', 0) from dual--返回0select "myNanvl"('NaN', 100) from dual--返回100select "myNanvl"('123', 0) from dual--返回123
关于regexp_replace();
其实if后面的条件是可以抽象一下的,懒得搞了,目前必要性也不大.
完了确实没很好的方法判断字符是不是数字的,就这个正则还是灰常准确的,所以就用他咯
下面就开始笔记了哈,
创建函数的语法
[]内为可选语法
| 为多选一
创建自定义函数的语法CREATE [OR REPLACE] FUNCTION "函数名"[(形参组)] RETURN 返回值类型AS|ISBEGIN -- 函数体 RETURN NULL;END;--其中形参组的语法是 形参名 IN|OUT|空 类型CREATE FUNCTION myFunction(str IN VARCHAR2, num OUT NUMBER, c char)...
if语句
condition代表一个条件
–1.语法 (IF-THEN)
Oracle/PLSQL中IF-THEN的语法是:
IF condition THEN {...statements to execute when condition is TRUE...}END IF;
–2.Syntax (IF-THEN-ELSE)
Oracle/PLSQL中IF-THEN-ELSE的语法是:
IF condition THEN {...statements to execute when condition is TRUE...}ELSE {...statements to execute when condition is FALSE...}END IF;
–3语法 (IF-THEN-ELSIF)
敲黑板,这里要考的,是ELSIF
Oracle/PLSQL中IF-THEN-ELSIF的语法是:
IF condition1 THEN {...statements to execute when condition1 is TRUE...}ELSIF condition2 THEN {...statements to execute when condition2 is TRUE...}ELSE {...statements to execute when both condition1 and condition2 are FALSE...}END IF;
PS:最后的笔记其实是从官网复制过来,翻译了一小下,百度到的什么博客啊,写的很乱,完全不如官网的清楚,以后写东西还是多看官方文档吧.
阅读全文
0 0
- oracle 函数(function) NANVL的扩展,语法笔记
- oracle笔记1-FUNCTION 函数
- ORACLE--Function简单语法
- oracle数据库function,语法
- ORACLE---自定义function语法
- Oracle DECODE函数的语法
- Oracle—自定义function语法
- ORACLE的基本语法(笔记)
- Spring调用Oracle的Function函数
- oracle 中函数(function)的学习
- ECMAScript6笔记:函数的扩展
- php中的function函数参数扩展的方法
- Oracle 自定义函数Function
- Oracle Function 函数
- Oracle 自定义函数Function
- Oracle Function ---- 函数
- oracle function函数
- oracle-function函数基础
- 小文件写:
- Maven项目没有Project Facets的解决方法
- Python 异常处理
- 000030:创建等价于if...else的三元运算符
- HashMap和ConcurrentHashMap浅析
- oracle 函数(function) NANVL的扩展,语法笔记
- 质因数分解 和 判断是否为质数
- C++构造函数中初始化成员的先后顺序
- composer安装yii advanced token的获取办法
- HTML页面的加载
- eclipse+JDK+汉化包+汉化说明
- python的学习和注意点初学的几个例子
- 网络安全实验室-基础-1
- vc++程序崩溃后不生成dump文件