sql中的 if 條件語句的用法

2021-09-25 17:48:49 字數 3326 閱讀 8268

if( a, b, c)
a的值為true,則返回值為 b

a的值為false,則返回值為 c

如下:

select if(true,1,2);

-> 1

select if(false,1,2);

-> 2

select if(strcmp("123","234"),"不相等","相等");

-> 不相等

舉個例子:

查詢出年齡大於18的學生,如果是男生的話,就要標註為棟樑,否則是未成年

select *,if(***='man','棟樑','未成年') as student_ can_be from  class_1  where age>18
ifnull( a, b)
判斷第乙個引數a是否為null

如果a不為空,直接返回a

如果a為空,返回第二個引數b

select ifnull(null,"11");

-> 11

select ifnull("00","11");

-> 00

nullif(a,b):如果兩個引數相等則返回null,否則返回第乙個引數的值a

mysql> select nullif(1,1),nullif(123,234);

+-------------+-----------------+

| nullif(1,1) | nullif(123,234) |

+-------------+-----------------+

| null | 123 |

+-------------+-----------------+

1)****** case的語法結構:

case  value

when [compare_value] then result

[when [compare_value] then result ...]

[else result] end

語義:

將case後面的值value分別和每個when子句後面的值compare_value進行相等比較

1,如果一旦和某個when子句後面的值相等則返回相應的then子句後面的值result;

2,如果和所有when子句後面的值都不相等,則返回else子句後面的值;

3,如果沒有else部分則返回null。

注意:

①value可以是字面量、表示式或者列名

②case表示式的資料型別取決於跟在then或else後面的表示式的型別

型別必須相同(可嘗試做隱式型別轉換),否則出錯

mysql> select userid,case salary                                             

-> when 1000 then 'low'

-> when 2000 then 'med'

-> when 3000 then 'high'

-> else '無效值' end salary_grade

-> from salary_tab;

+--------+--------------+

| userid | salary_grade |

+--------+--------------+

| 1 | low |

| 2 | med |

| 3 | high |

| 4 | 無效值 |

| 5 | low |

+--------+--------------+

2)searched case的語法結構:

case

when [condition] then result

[when [condition] then result ...]

[else result] end

語義:

1,如果某個when子句後面的條件conditiontrue,則返回相應的when子句後面的值result

2,如果所有的when子句後面的條件condition都不為true,則返回else子句後面的值;

3,如果沒有else部分則返回null

mysql> select userid,case

-> when salary<=1000 then 'low'

-> when salary=2000 then 'med'

-> when salary>=3000 then 'high'

-> else '無效值' end salary_grade

-> from salary_tab;

+--------+--------------+

| userid | salary_grade |

+--------+--------------+

| 1 | low |

| 2 | med |

| 3 | high |

| 4 | 無效值 |

| 5 | low |

+--------+--------------+

mysql中的if條件語句用法

if expr1,expr2,expr3 如果 expr1 是true expr1 0 and expr1 null 則 if 的返回值為 expr2 否則返回值則為 expr3 if 的返回值為數字值或字串值,具體情況視其所在語境而定。mysql select if 1 2,2,3 3 mysql...

SQL中的條件語句WHEN THEN ELSE

本篇文章講述sql條件語句when then else語句,以供參考,如有錯誤或不當之處還望大神們告知。注意 在mysql中對應判斷表示式的語句是when then else語句,本篇文章將介紹的是範圍條件查詢 when then else語句 和多值等值查詢 decode語句 使用者表t user...

SQL中case when語句的用法

個人學習筆記,歡迎指導!用法 1 case 欄位名 when 字段值 then 值1 else 值2 end 這一種是之前比較常用的一種方式,相當於是大部分程式語言中的switch case的用法,通過欄位名,去匹配字段值,適合字段值比較固定的情況下使用,特點是比較簡潔易用。示例一 and stat...