84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
SELECT 1 UNION SELECT null UNION SELECT !1
的含义是什么?是选择空集的意思?
业精于勤,荒于嬉;行成于思,毁于随。
先说UNION,是用于将多个不同的select语句执行的结果合并到一个结果集并返回,参考官方文档。明白了这一点,此语句可以拆分为3个不同的select语句:
SELECT 1; //直接返回字面量1的值 SELECT null; //返回null本身的“值”。NULL是mysql中的一个常量,表示“没有值”,不是空字符串或0,按道理其本身也不应该有一个具体的值,mysql只是返回这样一个字符串表示而已(总不能什么都没发生啊) SELECT !1 //逻辑非,非真即假,mysql中使用数字值1、0代表true和false,可用“SELECT TRUE, FALSE;”验证
再说这种SELECT语句的写法,可以先看下官方的说明,SELECT语句除了至少包含一条select_expr外,其它部分都可以省略,也就是说这种写法首先是合法的(SELECT can also be used to retrieve rows computed without reference to any table.)。那么有什么作用呢?简单的说,你可以理解这个时候MySQL是一个计算器,搭配MySQL提供的函数,可以用来做各种计算,执行成功后回返回最终的计算结果。举例:
mysql> select 1+1; //加法 +-----+ | 1+1 | +-----+ | 2 | +-----+ mysql> select pow(2,3); //指数运算,2的3次方 +----------+ | pow(2,3) | +----------+ | 8 | +----------+ mysql> select !0; //逻辑非 +----+ | !0 | +----+ | 1 | +----+ mysql> select 1 & 1; //按位与 +-------+ | 1 & 1 | +-------+ | 1 | +-------+ mysql> set @a=10,@b=5; //变量赋值后再运算 mysql> select @a+@b; +-------+ | @a+@b | +-------+ | 15 | +-------+ //最后题主的语句 mysql> SELECT 1 UNION SELECT null UNION SELECT !1; +------+ | 1 | +------+ | 1 | | NULL | | 0 | +------+
先说UNION,是用于将多个不同的select语句执行的结果合并到一个结果集并返回,参考官方文档。明白了这一点,此语句可以拆分为3个不同的select语句:
再说这种SELECT语句的写法,可以先看下官方的说明,SELECT语句除了至少包含一条select_expr外,其它部分都可以省略,也就是说这种写法首先是合法的(SELECT can also be used to retrieve rows computed without reference to any table.)。那么有什么作用呢?简单的说,你可以理解这个时候MySQL是一个计算器,搭配MySQL提供的函数,可以用来做各种计算,执行成功后回返回最终的计算结果。举例: