SELECT IF(STRCMP("111","222"),"不相等","相等"); -> 不相等

那么这个 IF 有啥用处呢?举个例子:
查找出售价为 50 的书,如果是 java 书的话,就要标注为 已售完

那么对应的SQL语句该怎样去写呢?

select *,if(book_name='java','已卖完','有货') as product_status from book where price =50

IFNULL 表达式

IFNULL( expr1 , expr2 )

判断第一个参数expr1 是否为NULL:

如果expr1不为空,直接返回expr1;

如果expr1为空,返回第二个参数 expr2

常用在 算术表达式计算和组函数 中,用来对null值进行转换处理(返回值是数字或者字符串)

在 expr1 的值不为 NULL 的情况下都返回 expr1,否则返回 expr2,如下:

SELECT IFNULL(NULL,"11");
SELECT IFNULL("00","11");

NULLIF 表达式

NULLIF(expr1,expr2):如果两个参数相等则返回NULL,否则返回第一个参数的值expr1

mysql> select nullif(1,1),nullif(123,321);
+-------------+-----------------+
| nullif(1,1) | nullif(123,321) |
+-------------+-----------------+
|        NULL |             123 |
+-------------+-----------------+

3、在SQL语句中实现“if-then-else”逻辑计算功能

  有两种形式:simple case和searched case

1)simple case的语法结构:

CASE  value
    WHEN  [compare_value] THEN  result
    [WHEN [compare_value] THEN  result ...] 
    [ELSE  result]  END

  将case后面的值value和每个when子句后面的值compare_value进行相等比较

    如果一旦和某个when子句后面的值相等则返回相应的then子句后面的值result;

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

    如果没有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的语法结构:

WHEN [condition] THEN result [WHEN [condition] THEN result ...] [ELSE result] END

  如果某个when子句后面的条件condition为true,则返回相应的when子句后面的值result;

  如果所有的when子句后面的条件condition都不为true,则返回else子句后面的值;

  如果没有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          |
+--------+--------------+
IF 表达式IF( expr1 , expr2 , expr3 )expr1 的值为 TRUE,则返回值为 expr2expr1 的值为FALSE,则返回值为 expr3如下:SELECT IF(TRUE,1+1,1+2);-&gt; 2SELECT IF(FALSE,1+1,1+2);-&gt; 3SELECT IF(STRCMP("111","222"),"...
MySQL的语言结构(即MySQLSQL语句的使用规则) 参考资料:http://dev.mysql.com/doc/refman/5.1/zh/language-structure.html &lt;!--[if !supportLineBreakNewLine]--&gt;&lt;!--[endif]--&gt; &lt;!--[if !supportLists]--&gt;1. 文字值...
  数据操纵 insert update delete   数据控制 grant revoke   这9种语句看起来很简单,但实际上内容还是很丰富的,学好这9种语句灵活运用对我们来说是非常重要的。   (1)Select 查询语句   语法:SELECT [ALL|DISTINCT] [AS 列名] [, [ 如果由AND分隔的所有条件为TRUE,则AND运算符显示记录。 如果使用AND运算符组合N个条件。对于SQL语句执行的操作(无论是事务还是查询),所有由AND分隔的条件都必须为TRUE。 如果由OR分隔的任何条件为真,则OR运算符显示记录。
sql语句当我们同时执行多个sql语句的时候,必须每个sql语句后面加上分号,此时我们的编译器是可以识别的,但是当我们如果在一个字符串去拼接多个sql语句的时候,而此时若我们还以分号去结尾,此时编译器是无法识别的,将会报错,此时只能逐条去执行了。 转载于:https://www.cnblogs.com/loveailsa10000/p/5013378.html...