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);-> 2SELECT IF(FALSE,1+1,1+2);-> 3SELECT IF(STRCMP("111","222"),"...
MySQL的语言结构(即MySQL的SQL语句的使用规则)
参考资料:http://dev.mysql.com/doc/refman/5.1/zh/language-structure.html <!--[if !supportLineBreakNewLine]--><!--[endif]-->
<!--[if !supportLists]-->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...