nvl

oracle null 空值排序- NVL,COALESCE , GREATEST ,LEAST

和自甴很熟 提交于 2020-01-19 11:35:44
1. COALESCE 返回该表达式列表的第一个非空value。 格式: COALESCE( value1, value2, value3, ... ) 含义: 返回value列表第一个非空的值。 value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。 EXAMPLE: select coalesce (1, null, 2 ) from dual ; -- 返回1 select coalesce ( null, 2, 1 ) from dual ; -- 返回2 select coalesce (t.empno, t.mgr ) from scott.emp t ; -- 效果类似 NVL( t.empno, t.mgr ) 2. GREATEST 返回值列表中最大值 格式: GREATEST( value1, value2, value3, ... ) 含义: 返回value列表最大的值。 value列表必须是相同类型,也可以是一个表的同一行、不同列的值进行比较。 当value值列表中有一个为NULL,则返回NULL值。 EXAMPLE: select greatest (1, 3, 2 ) from dual ; -- 返回3 select greatest ( 'A', 'B', 'C' ) from dual ; -- 返回C select

oracle null的解析

╄→гoц情女王★ 提交于 2020-01-13 19:50:13
有人总结了数据库中Null值的概念,比较精炼,摘录如下: Null是数据库中特有的数据类型,当一条记录的某个列为Null,则表示这个列的值是未知的、是不确定的。既然是未知的,就有无数种的可能性。因此,Null并不是一个确定的值。 这是Null的由来、也是Null的基础,所有和Null相关的操作的结果都可以从Null的概念推导出来。 判断一个字段是否为Null, 应该用IS Null或IS NOT Null,而不能用‘=’。对Null的判断只能定性,既是不是Null(IS Null/IS NOT Null),而不能定值。简单的说,由于Null存在着无数的可能,因此两个Null不是相等的关系,同样也不能说两个Null就不相等,或者比较两个 Null的大小,这些操作都是没有意义,得不到一个确切的答案的。因此,对Null的=、!=、>、<、>=、<=等操作的结果 都是未知的,也就算说,这些操作的结果仍然是Null。 同理,对Null进行+、-、*、/等操作的结果也是未知的,所以也是Null。 所以,很多时候会这样总结Null,除了IS Null、IS NOT Null以外,对Null的任何操作的结果还是Null。 Oracle 中的Null值和SQL Server 中的差不多,但是有个明显的区别,在Oracle中空字符串(‘’)被视作Null值

Oracle 表空间不足的处理办法

谁说我不能喝 提交于 2020-01-11 08:20:45
-1、查看表在那个表空间 select tablespace_name,table_name from user_talbes where table_name='test'; --2、获取用户的默认表空间 select username, DEFAULT_TABLESPACE from dba_users where username='MXH'; --3、查看表空间所有的文件 select * from dba_data_files where tablespace_name='USERS'; --4、查看表空间使用情况: SELECT tbs 表空间名, sum(totalM) 总共大小M, sum(usedM) 已使用空间M, sum(remainedM) 剩余空间M, sum(usedM)/sum(totalM)*100 已使用百分比, sum(remainedM)/sum(totalM)*100 剩余百分比 FROM( SELECT b.file_id ID, b.tablespace_name tbs, b.file_name name, b.bytes/1024/1024 totalM, (b.bytes-sum(nvl(a.bytes,0)))/1024/1024 usedM, sum(nvl(a.bytes,0)/1024/1024) remainedM,

常用SQL查询语句

时光总嘲笑我的痴心妄想 提交于 2020-01-01 02:29:12
一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ename, mgr FROM emp; SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项 4. 查询指定行 SQL>SELECT * FROM emp WHERE job='CLERK'; 5. 使用算术表达式 SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp; nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。 SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序) SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82'; 6. 使用like操作符(%,_) %表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。 SQL>SELECT * FROM emp WHERE ename like 'S

常用SQL查询语句

好久不见. 提交于 2020-01-01 02:27:44
常用SQL查询语句 一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ename, mgr FROM emp; SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项 4. 查询指定行 SQL>SELECT * FROM emp WHERE job='CLERK'; 5. 使用算术表达式(nvl(comm,0) 如果comm为空就变成0) SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp; nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。 SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序) SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82'; 6. 使用like操作符(%,_) %表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。 SQL

常用SQL查询语句

房东的猫 提交于 2020-01-01 02:26:15
一、简单查询语句 1. 查看表结构 SQL>DESC emp; 2. 查询所有列 SQL>SELECT * FROM emp; 3. 查询指定列 SQL>SELECT empmo, ename, mgr FROM emp; SQL>SELECT DISTINCT mgr FROM emp; 只显示结果不同的项 4. 查询指定行 SQL>SELECT * FROM emp WHERE job='CLERK'; 5. 使用算术表达式 SQL>SELECT ename, sal*13+nvl(comm,0) FROM emp; nvl(comm,1)的意思是,如果comm中有值,则nvl(comm,1)=comm; comm中无值,则nvl(comm,1)=0。 SQL>SELECT ename, sal*13+nvl(comm,0) year_sal FROM emp; (year_sal为别名,可按别名排序) SQL>SELECT * FROM emp WHERE hiredate>'01-1月-82'; 6. 使用like操作符(%,_) %表示一个或多个字符,_表示一个字符,[charlist]表示字符列中的任何单一字符,[^charlist]或者[!charlist]不在字符列中的任何单一字符。 SQL>SELECT * FROM emp WHERE ename like 'S

Looking NULL values for different Oracle Type

假装没事ソ 提交于 2019-12-13 20:09:19
问题 I'm doing collection of two columns(col & val). Into second select col is parameter of other columns and val is value of this column. declare TYPE t_my_list is record(id varchar2(1000), col VARCHAR2(4000),val VARCHAR2(4000)); TYPE list_3STR is table of t_my_list; v_stmt VARCHAR2(32000) := 'SELECT id, col, val FROM userA.tableA'; v_lstmt VARCHAR2(32000); v_ret list_3STR := list_3STR(); cDel number; begin EXECUTE IMMEDIATE v_stmt BULK COLLECT INTO v_ret; for i in v_ret.first..v_ret.last loop v

MySql coalesce函数

浪尽此生 提交于 2019-12-09 11:44:22
语法 coalesce(str1,str2,str3,…,default) str1,str2,str3:参数,但是最终只会返回最左边那个非空参数的值。 default:当前面所有的表达式值都为NULL的时候,返回此参数的值。 MySql中的coalesce()函数用于返回参数中的第一个非空表达式,顺序为从左往右。 与nvl()函数的对比 这个函数其实和nvl()函数的作用基本是一样的,只不过nvl()函数不能在MySql中使用,因此用coalesce()函数来替代。 相比于nvl()函数,coalesce中参数可以有多个,而nvl()函数只有两个参数。 SQL示例 比如我们要获取form_xf这张表中XFCode这个字段的最大值,当此表无数据时,则直接返回默认值0。 SELECT coalesce(max(XFCode), 0) FROM form_xf 来源: CSDN 作者: wunianisme 链接: https://blog.csdn.net/qq_29645505/article/details/103263310

oracle nvl()函数

不想你离开。 提交于 2019-12-06 00:30:57
语法1:nvl(str1, str2) 如果str1为null,则返回表达式str2的值。如果str1不为null,则返回表达式str1的值。 拿下图的ORDER_COUNT为例,若SUM(ORDER_COUNT)为null,则返回0。要注意的一点是,表达式1和表达式2的数据类型必须为同一个类型 语法2: nvl2(str1, str2, str3) 如果str1为null,则函数返回表达式str3的值。如果str1不为null,则返回表达式str2的值。 来源: https://www.cnblogs.com/xdsuannai/p/11953771.html

Is there a function equivalent to the Oracle's NVL in MySQL?

不想你离开。 提交于 2019-12-05 13:47:28
问题 I'm selecting the max of a column from a table. But there is one problem: if there are no rows in the table, it returns null. I want to use a function which will return a certain value if the result is null. For example with Oracle there is the NVL function which gives a certain value if the column is null. Is there an equivalent function in MySQL ? 回答1: Use coalesce: select coalesce(column_name, 'NULL VALUE') from the_table 来源: https://stackoverflow.com/questions/7239498/is-there-a-function