mysql中isnull,ifnull,nullif的用法如下:
isnull(expr) 的用法:如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。mysql> select isnull(1+1);-> 0mysql> select isnull(1/0);-> 1使用= 的null 值对比通常是错误的。
isnull() 函数同 is null比较操作符具有一些相同的特性。请参见有关is null 的说明。
IFNULL(expr1,expr2)的用法:
假如expr1 不为 NULL,则 IFNULL() 的返回值为 expr1;否则其返回值为 expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
mysql> SELECT IFNULL(1,0);-> 1mysql> SELECT IFNULL(NULL,10);-> 10mysql> SELECT IFNULL(1/0,10);-> 10mysql> SELECTIFNULL(1/0,‘yes‘);
-> ‘yes‘
IFNULL(expr1,expr2)的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、 REAL或INTEGER。假设一个基于表达式的表的情况, 或MySQL必须在内存储器中储存一个临时表中IFNULL()的返回值:CREATE TABLE tmp SELECT IFNULL(1,‘test‘) AS test;在这个例子中,测试列的类型为 CHAR(4)。NULLIF(expr1,expr2) 的用法: 如果expr1= expr2 成立,那么返回值为NULL,否则返回值为 expr1。这和CASE WHEN expr1 = expr2THEN NULL ELSE expr1 END相同。mysql> SELECTNULLIF(1,1);
-> NULLmysql> SELECT NULLIF(1,2);-> 1如果参数不相等,则 MySQL 两次求得的值为 expr1 。
MySql IFNULL 联表查询出来的null 如何赋值
标签:
小编还为您整理了以下内容,可能对您也有帮助:
mysql ifnull() 返回的仍然为空值null,怎么办?
mybatis返回的null类型数据消失,导致前端展示出错。
如果查询出的结果是空值,应当转换成空字符串。当然在前端也能进行判断,但要求后台实现这个功能。
解决方案:
使用如下方法查询:
SELECT IFNULL(sex,'') AS sex FROM user --如果查询到这个sex为null值,那么就赋值成空字符串不过,如果查询语句本身为null,那么返回前端的还是null,这个就要在代码里判断了。
比如:
SELECT IFNULL(sex,'') AS sex FROM user WHERE id=100
这条语句本身的返回结果是null,它也就不会执行IFNULL函数了,最后的返回结果当然也是null。所以方法是在代码中增加判断:
if(ansList == null || ansList.size() == 0){...}
扩展资料
mySql中IFNULL的使用说明:
IFNULL(expr1,expr2)
如果expr1不是NULL,IFNULL()返回expr1,否则它返回expr2。IFNULL()返回一个数字或字符串值
具体用法如:现有学生表(tbl_student)和分数表(score),查询学生表的所有字段和学生相对于的英语成绩(english_score)sql如下:
select stu.*,IFNULL(score.english_score,0) from tbl_student stu,tbl_score score where 1=1 and stu.stu_id=score.stu_id
以上sql中,如果score表中的english_score有值,则IFNULL(score.english_score,0)就显示english_score,否则,显示0。
MySql中的IFNULL、NULLIF和ISNULL用法详解
今天用到了MySql里的isnull才发现他和MSSQL里的还是有点区别,现在简单总结一下:
mysql中isnull,ifnull,nullif的用法如下:
isnull(expr)
的用法:
如expr
为null,那么isnull()
的返回值为
1,否则返回值为
0。
mysql>
select
isnull(1+1);
->
0
mysql>
select
isnull(1/0);
->
1
使用=
的null
值对比通常是错误的。
isnull()
函数同
is
null比较操作符具有一些相同的特性。请参见有关is
null
的说明。
IFNULL(expr1,expr2)的用法:
假如expr1
不为
NULL,则
IFNULL()
的返回值为
expr1;
否则其返回值为
expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
mysql>
SELECT
IFNULL(1,0);
->
1
mysql>
SELECT
IFNULL(NULL,10);
->
10
mysql>
SELECT
IFNULL(1/0,10);
->
10
mysql>
SELECT
IFNULL(1/0,'yes');
->
'yes'
IFNULL(expr1,expr2)的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、
REAL或
INTEGER。假设一个基于表达式的表的情况,
或MySQL必须在内存储器中储存一个临时表中IFNULL()的返回值:
CREATE
TABLE
tmp
SELECT
IFNULL(1,'test')
AS
test;
在这个例子中,测试列的类型为
CHAR(4)。
NULLIF(expr1,expr2)
的用法:
如果expr1
=
expr2
成立,那么返回值为NULL,否则返回值为
expr1。这和CASE
WHEN
expr1
=
expr2
THEN
NULL
ELSE
expr1
END相同。
mysql>
SELECT
NULLIF(1,1);
->
NULL
mysql>
SELECT
NULLIF(1,2);
->
1
‘
如果参数不相等,则
MySQL
两次求得的值为
expr1
。
以上所述是小编给大家介绍的MySql中的IFNULL、NULLIF和ISNULL用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
MySql中的IFNULL、NULLIF和ISNULL用法详解
今天用到了MySql里的isnull才发现他和MSSQL里的还是有点区别,现在简单总结一下:
mysql中isnull,ifnull,nullif的用法如下:
isnull(expr)
的用法:
如expr
为null,那么isnull()
的返回值为
1,否则返回值为
0。
mysql>
select
isnull(1+1);
->
0
mysql>
select
isnull(1/0);
->
1
使用=
的null
值对比通常是错误的。
isnull()
函数同
is
null比较操作符具有一些相同的特性。请参见有关is
null
的说明。
IFNULL(expr1,expr2)的用法:
假如expr1
不为
NULL,则
IFNULL()
的返回值为
expr1;
否则其返回值为
expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。
mysql>
SELECT
IFNULL(1,0);
->
1
mysql>
SELECT
IFNULL(NULL,10);
->
10
mysql>
SELECT
IFNULL(1/0,10);
->
10
mysql>
SELECT
IFNULL(1/0,'yes');
->
'yes'
IFNULL(expr1,expr2)的默认结果值为两个表达式中更加“通用”的一个,顺序为STRING、
REAL或
INTEGER。假设一个基于表达式的表的情况,
或MySQL必须在内存储器中储存一个临时表中IFNULL()的返回值:
CREATE
TABLE
tmp
SELECT
IFNULL(1,'test')
AS
test;
在这个例子中,测试列的类型为
CHAR(4)。
NULLIF(expr1,expr2)
的用法:
如果expr1
=
expr2
成立,那么返回值为NULL,否则返回值为
expr1。这和CASE
WHEN
expr1
=
expr2
THEN
NULL
ELSE
expr1
END相同。
mysql>
SELECT
NULLIF(1,1);
->
NULL
mysql>
SELECT
NULLIF(1,2);
->
1
‘
如果参数不相等,则
MySQL
两次求得的值为
expr1
。
以上所述是小编给大家介绍的MySql中的IFNULL、NULLIF和ISNULL用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
mysql 存储过程中变量的定义与赋值操作
一、变量的定义
mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end
块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值。
定义一个变量语法如下:
declare
var_name[,...]
type[default
value]看一个变量定义实例
declare
last
date;二、mysql存储过程变量赋值
变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下
复制代码
代码如下:
set
var_name=
[,var_name
expr]...给上面的last变量赋值方法如下
set
last
=
date_sub(
current_date(),interval
1
month);下面看通过查询给变量赋值,要求查询返回的结果必须为一行,具体操作如下
select
col
into
var_name[,...]
table_expr我们来通过查询给v_pay赋值。
create
function
get
_cost(p_custid
int,p_eff
datetime)
return
decimal(5,2)
deterministic
reads
sql
data
begin
declare
v_pay
decimail(5,2);
select
ifnull(
sum(pay.amount),0)
into
vpay
from
payment
where
pay.payd<=p_eff
and
pay.custid=pid
reutrn
v_rent
+
v_over
-
v_pay;
end
$$
好了,这篇简单的存储过程中变量的定义赋值教程就到这里了,下面我们会接着讲关于myql存储过程的条件的定义与处理。
以下是其它网友的补充
在MySQL的存储过程中,可以使用变量,它用于保存处理过程中的值。
定义变量使用DECLARE语句,语法格式如下:
DECLARE
var_name[,...]
type
[DEFAULT
value]
其中,var_name为变量名称,type为MySQL支持的任何数据类型,可选项[DEFAULT
value]为变量指定默认值。一次可以定义多个同类型的变量,各变量名称之间以逗号“,”隔开。
定义与使用变量时需要注意以下几点:
◆
DECLARE语句必须用在DEGIN…END语句块中,并且必须出现在DEGIN…END语句块的最前面,即出现在其他语句之前。
◆
DECLARE定义的变量的作用范围仅限于DECLARE语句所在的DEGIN…END块内及嵌套在该块内的其他DEGIN…END块。
◆
存储过程中的变量名不区分大小写。
定义后的变量采用SET语句进行赋值,语法格式如下:
SET
var_name
=
expr
[,var_name
=
expr]
...
其中,var_name为变量名,expr为值或者返回值的表达式,可以使任何MySQL支持的返回值的表达式。一次可以为多个变量赋值,多个“变量名=值”对之间以逗号“,”隔开。
例如:
复制代码
代码如下:
begin
declare
no
varchar(20);
declare
title
varchar(30);
set
no='101010',title='存储过程中定义变量与赋值';
end
提示:存储过程中所有的关键字也是不区分大小写的,如BEGIN可以写出begin。
mysql 存储过程中变量的定义与赋值操作
一、变量的定义
mysql中变量定义用declare来定义一局部变量,该变量的使用范围只能在begin...end
块中使用,变量必须定义在复合语句的开头,并且是在其它语句之前,也可以同时申明多个变量,如果需要,可以使用default赋默认值。
定义一个变量语法如下:
declare
var_name[,...]
type[default
value]看一个变量定义实例
declare
last
date;二、mysql存储过程变量赋值
变量的赋值可直接赋值与查询赋值来操作,直接赋值可以用set来操作,可以是常量或表达式如果下
复制代码
代码如下:
set
var_name=
[,var_name
expr]...给上面的last变量赋值方法如下
set
last
=
date_sub(
current_date(),interval
1
month);下面看通过查询给变量赋值,要求查询返回的结果必须为一行,具体操作如下
select
col
into
var_name[,...]
table_expr我们来通过查询给v_pay赋值。
create
function
get
_cost(p_custid
int,p_eff
datetime)
return
decimal(5,2)
deterministic
reads
sql
data
begin
declare
v_pay
decimail(5,2);
select
ifnull(
sum(pay.amount),0)
into
vpay
from
payment
where
pay.payd<=p_eff
and
pay.custid=pid
reutrn
v_rent
+
v_over
-
v_pay;
end
$$
好了,这篇简单的存储过程中变量的定义赋值教程就到这里了,下面我们会接着讲关于myql存储过程的条件的定义与处理。
以下是其它网友的补充
在MySQL的存储过程中,可以使用变量,它用于保存处理过程中的值。
定义变量使用DECLARE语句,语法格式如下:
DECLARE
var_name[,...]
type
[DEFAULT
value]
其中,var_name为变量名称,type为MySQL支持的任何数据类型,可选项[DEFAULT
value]为变量指定默认值。一次可以定义多个同类型的变量,各变量名称之间以逗号“,”隔开。
定义与使用变量时需要注意以下几点:
◆
DECLARE语句必须用在DEGIN…END语句块中,并且必须出现在DEGIN…END语句块的最前面,即出现在其他语句之前。
◆
DECLARE定义的变量的作用范围仅限于DECLARE语句所在的DEGIN…END块内及嵌套在该块内的其他DEGIN…END块。
◆
存储过程中的变量名不区分大小写。
定义后的变量采用SET语句进行赋值,语法格式如下:
SET
var_name
=
expr
[,var_name
=
expr]
...
其中,var_name为变量名,expr为值或者返回值的表达式,可以使任何MySQL支持的返回值的表达式。一次可以为多个变量赋值,多个“变量名=值”对之间以逗号“,”隔开。
例如:
复制代码
代码如下:
begin
declare
no
varchar(20);
declare
title
varchar(30);
set
no='101010',title='存储过程中定义变量与赋值';
end
提示:存储过程中所有的关键字也是不区分大小写的,如BEGIN可以写出begin。
MySQL中的IFNULL用法
IFNULL(expr1,expr2)
如果 expr1 不是 NULL,IFNULL() 返回 expr1,否则它返回 expr2。
IFNULL()返回一个数字或字符串值,取决于它被使用的上下文环境。
例子:
说明:IFNULL只有MySQL中有,hive中并没有此用法。
数据库联表查询及替换null值的问题?详细如下图
create table A
(
id varchar2(20) primary key,
userid1 varchar2(20),
userid2 varchar2(20)
)
create table B
(
id varchar2(20) primary key,
name varchar2(20)
)
drop table B;
insert into A values('0','0','');
insert into A values('1','','1');
insert into A values('2','2','1');
insert into B values('0','张三');
insert into B values('1','李四');
insert into B values('2','王五');
--写生的
select
(case when aa.u1 in (select id from b) then ( select bname from ( select B.name bname,rownum from A,B where aa.u1 = B.id) where rownum=1) else '未指定' end) uname1,
(case when aa.u2 in (select id from b) then ( select bname from ( select B.name bname,rownum from A,B where aa.u2 = B.id) where rownum=1) else '未指定' end) uname2
from ( select a.id ,a.userid1 u1,a.userid2 u2 from A a) aa;