mysql coalesce函数

COALESCE函数从值列表中返回第一个非NULL的值,当遇到NULL值时将其替换为0。 coalesce(str1,str2....);

e.g.   需要在表中查出所有比‘WARD‘提成(COMM)低的员工,提成为NULL的员工也包括在内。 (个人意见,如果数据库提成字段默认值不是为0值的话肯定是开发那个的错)。

select ename,comm from emp where coalesce(comm,0) < (select comm from emp whrer ename ="WARD");

  结果:

+--------+------+
| ename  | comm |
+--------+------+
| SMITH  | NULL |
| ALLEN  |  300 |
| JONES  | NULL |
| BLAKE  | NULL |
| CLARK  | NULL |
| SCOTT  | NULL |
| KING   | NULL |
| TURNER |    0 |
| JAMES  | NULL |
| MILLER | NULL |
| ADAMS  | NULL |
| FORD   | NULL |
+--------+------+
12 rows in set

  

返回非NULL值:

select ename, comm,coalesce(comm,0) from emp where coalesce(comm,0) < (select comm from emp where ename = ‘WARD‘);

  

+--------+------+------------------+
| ename  | comm | coalesce(comm,0) |
+--------+------+------------------+
| SMITH  | NULL |                0 |
| ALLEN  |  300 |              300 |
| JONES  | NULL |                0 |
| BLAKE  | NULL |                0 |
| CLARK  | NULL |                0 |
| SCOTT  | NULL |                0 |
| KING   | NULL |                0 |
| TURNER |    0 |                0 |
| JAMES  | NULL |                0 |
| MILLER | NULL |                0 |
| ADAMS  | NULL |                0 |
| FORD   | NULL |                0 |
+--------+------+------------------+
12 rows in set

  

时间: 2024-08-15 07:22:31

mysql coalesce函数的相关文章

mysql IFNULL函数和COALESCE函数使用技巧

IFNULL() 函数 IFNULL() 函数用于判断第一个表达式是否为 NULL,如果为 NULL 则返回第二个参数的值,如果不为 NULL 则返回第一个参数的值. IFNULL() 函数语法格式为: IFNULL(expression, alt_value) 如果第一个参数的表达式 expression 为 NULL,则返回第二个参数的备用值. 参数说明: 参数 描述 expression 必须,要测试的值 alt_value 必须,expression 表达式为 NULL 时返回的值 CO

Mysql的函数使用方法

今天有点临时需求要计算一张表的结果,不想写代码,想到了mysql的自定义函数.碰到了很多问题,为了方便一下使用,在此记录一下. 需求:一张表中,有比分,需要查询出比赛id和比赛结果. 分析: 单表查询没啥的,困难就困难在怎么判断比分之后返回想要的结果. 这里我把比赛结果分别定义代号,1主场胜.2平局.3客场胜 函数逻辑: 接收两个参数,判断参数的大小,分别返回结果. 实现: Navicat操作: navicat for mysql 工具内--创建函数 这里分别是存储过程和函数,我们选择函数 设置

MySQL字符串函数、日期时间函数

MySQL字符串函数.日期时间函数 一.常见字符串函数: 1.CHAR_LENGTH  获取长度(字符为单位) 2.FORMAT  格式化 3.INSERT  替换的方式插入 4.INSTR  获取位置 5.LEFT/RIGHT  取左.取右 6.LENGTH   获取长度(字节为单位) 7.LTRIM/RTRIM/TRIM 去空格(左/右/自定义) 8.STRCMP  字符串比较 9.CONCAT  字符串拼接 10.SUBSTRING  字符串截取 1.CHAR_LENGTH:获取长度(字符

Mysql字符串函数FIND_IN_SET()的两点用法

概要:该可以查询用逗号分割的字段,以及对结果进行强制排序 首先看一张表: colid vyear area cast ,31,32,21,12 2014 1 15 ,32,33,34,35,21, 2014 2 16 ,33,34,36,39,40 2011 3 17 表中的colid字段的值是以逗号分割, 当我们需要查询这张表中,colid含有32的行, 那么可以用FIND_IN_SET() SQL如下: SELECT * FROM table WHERE FIND_IN_SET('32',

MySQL数据处理函数

数据处理函数 有时从数据库表中获取到的数据需要进行一些处理.如将小写字母替换为相应的大写字母.这个处理过程可以在客户机上进行,也可以在数据库上进行.数据库上进行会更高效.数据库中有相应的数据处理函数来处理这些数据,但是在SQL中使用特殊的数据处理函数会降低其可移植性.不同的DBMS系统,其数据处理函数不同. 大多数的SQL支持以下类型的函数 用于处理文本串的函数,如删除.填充值.转换大小写: 用于在数值数据上进行算术操作的函数: 用于处理日期和时间值并从这些值中提取特殊成分,如两个日期只差的函数

MySQL四舍五入函数ROUND(x)、ROUND(x,y)和TRUNCATE(x,y)

MySQL四舍五入函数ROUND(x) ROUND(x)函数返回最接近于参数x的整数,对x值进行四舍五入. 实例: 使用ROUND(x)函数对操作数进行四舍五入操作.SQL语句如下: mysql>SELECT ROUND(-2.34),ROUND(-4.56),ROUND(2.34),ROUND(4.56); ROUND(x)函数的执行结果如下图所示: 上图中代码执行的结果显示,进行四舍五入处理以后,只保留了各个值的整数部分. MySQL四舍五入函数ROUND(x,y) ROUND(x,y)函数

mysql 创建函数ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_f

mysql 创建函数的时候 报错 ERROR 1418 (HY000): This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)ERROR 1418 (HY000

DB2中coalesce函数的应用

在ETL项目中经常会碰到这样的一种情况: 目标表中的某列来源于不同的源数据表A,B,C.如果在A中没有有效的数据则从B中取,如果B中没有则从C中取,如果C中也没有则设置为空值. 遇到这样的情况可能,有时候第一个念头就是case when then else end这样的方式,这种方式也可以解决问题,但是写起来还是比较复杂,容易出错,特别是当别人看你写的SQL的时候会头疼. 那么有没有更好的办法呢? 那就是coalesce函数. COALESCE函数可以替代CASE语句,而且比CASE要方便得多,

MySQL的几种表外连接及PHP操作MySQL的函数

内连接 按照条件,将左表的每天记录匹配右表,如果条件符合,字段内容将会被保存,如果不符合,则不会被保存: 语法: select  *|字段列表 from 左表 inner join 右表 on 左表.字段=右表.字段...; Inner 可以省略掉: 简约版语法 select  *|字段列表 from 左表 join 右表 on 左表.字段=右表.字段....; 外连接 左外连接 语法: select  *|字段列表 from 左表 left  join 右表 on 左表.字段=右表.字段...