① SQL中 nvl()、coalesce()、decode()这三个函数,如果只是判断非空的话,哪一个效率相比较高
nvl只支持2个参数,这是oracle特有的
coalesce支持不定参数,coalesce(bonus,0,1)应该写成coalesce(bonus,0),最后1个不用写,这是ansi标准函数,在多次外连接时尤其有用,譬如 t1 full join t2 on t1.id=t2.id full join t3 on coalesce(t1.id,t2.id)=t3.id full join t4 on coalesce(t1.id,t2.id,t3.id)=t4.id
decode判断不了非空
② 在sql语句中nvl是什么意思
就是一个空值判断的函数,相当于if...else...,如果变量为null,则取后面的值,不为空,则取变量的值。
③ nvl、nvl2、nullif、coalesce函数的区别
NVL函数的格式如下:NVL(expr1,expr2)
含义是:如果oracle第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第一个参数本来的值。
例如:
SQL> select ename,NVL(comm, -1) from emp;
NVL2函数的格式如下:NVL2(expr1,expr2, expr3)
含义是:如果该函数的第一个参数为空那么显示第二个参数的值,如果第一个参数的值不为空,则显示第三个参数的值。SQL> select ename,NVL2(comm,-1,1) from emp;
NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。
下面是一个例子。使用的是oracle中HR schema,如果HR处于锁定,请启用
这里的作用是显示出那些换过工作的人员原工作,现工作。
SQL> SELECT e.last_name, e.job_id,j.job_id,NULLIF(e.job_id, j.job_id) “Old Job ID”
FROM employees e, job_history j
WHERE e.employee_id = j.employee_id
ORDER BY last_name;
Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。
格式如下:
Coalesce(expr1, expr2, expr3….. exprn)
表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。
返回表达式中第一个非空表达式,如有以下语句: SELECT COALESCE(NULL,NULL,3,4,5) FROM al 其返回结果为:3
如果所有自变量均为 NULL,则 COALESCE 返回 NULL 值。 COALESCE(expression1,...n) 与此 CASE 函数等价:
这个函数实际上是NVL的循环使用,在此就不举例子了。
④ 在sql语句中nvl是什么意思
NVL(ARG,VALUE)达标如果前面的ARG值为NULL那么返回的值为后面的VALUE二者结合使用:
DECODE(NVL(M01.NINUSI_NM,''),'','-',M01.NINUSI_NM)
首先判断--若M01.NINUSI_NM是否为空.若为空赋给空值[NVL函数]
其次,判断取出的字段是否为空,如果是则赋给'-'
最后的默认处理是M01.NINUSI.NM。
⑤ 数据库sql语句length(NVL(RZSJ,''))是什么意思
都是oracle的函数..
length()用于计算字符串长度,在mssql中对应函数为len()
nvl是NULL值替换函数,判断参数1为NULL的情况下替换输出参数2,
在mssql中的对应函数为isnull()
length(NVL(RZSJ,''))
输出RZSJ列值的长度,如果为NULL则输出空字符串的长度(0)
⑥ 在oracle中函数NVL是什么意思
nvl(a,b) 意思是当a的值为null时候,就返回b的值,否则返回a的值
⑦ oracle语法nvl,sign与round什么意思
这些都是oracle内置函数
nvl带两个参数 nvl(n1,n2):当n1为‘null’时 返回n2;
sign 带一个参数 sign(n),当n<0 ,返回-1,当n=0返回0,当n>0返回1;
round带一个参数(或者两个) round(n,m)/round(n)
当m>0四舍五入为m位小数,如果m小于0则四舍五入到小数点向左第m位(第二个参数m如果不为整数如2.1,则截取m整数部分)
这些函数你可以用这样的语句测试下,印象会更深刻
select 函数 from al;
⑧ “select sal+nvl(comm,0)from emp”是什么意思
avg是查询平均数的函数
nvl是oracle中空则为另一个数。
这个语句是查询emp表中sal字段的平均值。
即总的sal值除以总行数得到的值。
例如
sal
1
2
null
3
4
这5行数据,运行之后,得到的值是2
⑨ sql NVL 是什么
这是oracle的写法。
1.nvl是个函数,作用是如果第一个参数为空值,则返回第二个参数的值,否则返回第一个参数的值。
2.(+)表示外连接,就是在做关联之后,y表中存在而x表中不存在的数据也能查出来。
⑩ 在oracle中NVL是什么意思
NVL(coloum, 0) 的意思是 如果 coloum 是NULL, 则取 0值
通过查询获得某个字段的值,如果这个值为null将给出一个预设的默认值