Oracle的NVL()函数和MySQL中的IfNull()函数
MS SQL 中的IsNull()函数:
IsNull ( check_expression , replacement_expression )
check_expression: 可以是任何类型,将要检查的表达式 不为空,返回它
replacement_expression: 类型必须和check_expression相同,check_expression为null,返回它
这个函数的作用就是:判断check_expression是否为空,为空就返回replacement_expression,不为空则返回check_expression
eg:
SELECT IsNull(null,1) 返回1
SELECT IsNull(null,’男') 返回男
SELECT IsNull(‘’,'男') 注意返回的不是男哦
MS Sql中的 IsNull( )函数相当于Oracle中的 NVL( )函数:
NVL(EXP1,EXP2),函数返回exp1和exp2 中第一个不为null的值。
如果exp1为空就返回exp2,否则返回exp1。
相当于Mysql中的IfNull()函数:
应用场景:比如一张表:Products ,该表取自 http://www.w3schools.com/SQL/sql_isnull.asp
P_Id
ProductName
UnitPrice
UnitsInStock
UnitsOnOrder
1
Jarlsberg
10.45
16
15
2
Mascarpone
32.56
23
3
Gorgonzola
15.67
9
20
假设UnitsOnOrder这一列是可以为空的,可能含有空值,那么执行
SELECT ProductName,UnitPrice*(UnitsInStock+UnitsOnOrder) from Products 有可能会出错
因为UnitsOnOrder这一列为空的时候,运算的结果就是空
mssql的isnull()函数可以指定处理空值的方式:
改为下面得就可以了SELECT ProductName,UnitPrice*(UnitsInStock+isnull(UnitsOnOrder,0)) from Products
isnull(unitsOnOrder,0) unitsOnOrder为空的时候返回0
COALESCE() function
COALESCE ( expression [ ,...n ] )
相当于:
COALESCE(expression1,...n) 的功能与以下 CASE 表达式相同:
CASE
WHEN (expression1 IS NOT NULL) THEN expression1
WHEN (expression2 IS NOT NULL) THEN expression2
...
ELSE expressionN
END
相关文档:
什么是合并多行字符串(连接字符串)呢,例如:
SQL> desc test;
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y &nb ......
什么是合并多行字符串(连接字符串)呢,例如:
SQL> desc test;
Name Type Nullable Default Comments
------- ------------ -------- ------- --------
COUNTRY VARCHAR2(20) Y &nb ......
1、创建存储过程
create or replace procedure test(var_name_1 in type,var_name_2 out type) as
--声明变量(变量名 变量类型)
begin
--存储过程的执行体
end test;
打印出输入的时间信息
E.g:
create or replace procedure test(workDate in Date) is
begin
dbms_output.putline('The input date is: ......
Oracle存储过程包含三部分:过程声明,执行过程部分,存储过程异常。
Oracle存储过程可以有无参数存储过程和带参数存储过程。
一、无参程序过程语法
1 create or replace procedure NoParPro
2 as ;
3 begin
4 ;
5 exception &nb ......