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。
isnull(expr) 用法:如expr 為null,那麼isnull() 的返回值為 1,否則返回值為 0。
mysql>
select isnull(1+
1);-
>
0 mysql>
select isnull(1/
0);-
>
1 使用= 的null 值對比通常是錯誤的。
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。
coalesce(expr1, expr2,… exprn):在mysql中的用途是返回第乙個不是null的值
select
coalesce
(null,1
/0,2
);--2select
coalesce
(null,1
/0,2
,3);
--2
只有兩個引數的情況下,相當於ifnull
select ifnull(
null,2
);--2select
coalesce
(null,2
);--2
預設析構函式 空函式?
如果是初級的c 入門書籍會告訴你,預設的構造和析構函式都是空函式,他不做任何操作。但實際情況是,嚴格上來說這句話是錯誤的。應該分情況討論如下 乙個類是plain old data型別的,即該類的建構函式和析構函式都是平凡的 trivial的 若該類的預設構造 析構函式存在,則他們是空函式。如果乙個類...
mysql判重插入
表結構 create table test id int 11 not null auto increment,name varchar 255 character set latin1 default null,code varchar 10 character set latin1 defaul...
gcc 中 O選項對空函式的優化
將空函式優化掉是一項很有意義的工作。比如,在程式中,常常要定義乙個列印函式。如果在 release時,把這個函式使用條件編譯定義為空函式。且此空函式被優化掉,那就可以極大地提高程式的效能。測試表明 在gcc中,使用 o可以優化掉內聯的空函式。預設情況下,空函式不會被優化掉。即使使用 o,也不會優化掉...