isnull(expr)
expr 是 null,isnull() 返回 1,否则返回 0:
mysql> select isnull(1+1);
-> 0
mysql> select isnull(1/0);
-> 1
注意,对 null 值使用 = 进行比较总是为 false !
coalesce(list)
null 的元素:
mysql> select coalesce(null,1);
-> 1
mysql> select coalesce(null,null,null);
-> null
interval(n,n1,n2,n3,...)
n < n1 返回 0,如果 n < n2 返回 1,等等。所有的参数均被当作整数。为了函数能正确地工作,它要求 n1 < n2 < n3 < ... < nn。这是因为它使用的是一个二进制的搜索(非常地快):
mysql> select interval(23, 1, 15, 17, 30, 44, 200);
-> 3
mysql> select interval(10, 1, 10, 100, 1000);
-> 2
mysql> select interval(22, 23, 30, 44, 200);
-> 0
如果以任何一个标准运算符(=, <>..., 但除了 like)对一个忽略大小写的字符串进行比较,尾部的空白空间(空格、tab 和换行)均被忽略。
mysql> select "a" ="a \n";
-> 1
6.3.1.3 逻辑运算符
在 sql 中,所有的逻辑运算符返回的值均为 true、false 或 null (未知)。在 mysql 中,它们由 1
(true)、0 (false) 和 null 实现。这些大部分在不同的 sql 数据库间是相同的,然而某些可能会以一个非零值返回
true。
not!-
逻辑非。
如果操作数为
0,返回1;如果操作数为非零,返回0;如果操作数为not null,返回null。mysql> select not 10; -> 0 mysql> select not 0; -> 1 mysql> select not null; -> null mysql> select ! (1+1); -> 0 mysql> select ! 1+1; -> 1最后一个例子返回1,因为表达式是与(!1)+1一样被计算的。 and';&-
逻辑与。
如果所有的操作数都是非零或非
null的,返回1;如果有一个或多个操作数为0,则返回0,只要操作数中有null返回值就为null。mysql> select 1 ';& 1; -> 1 mysql> select 1 ';& 0; -> 0 mysql> select 1 ';& null; -> null mysql> select 0 ';& null; -> 0 mysql> select null ';& 0; -> 0请注意,在 mysql 4.0.5 以前版本中,当遇到一个null时就停止计算,而不是继续进程检查可能存在的0。这就意味着,在这些版本中,select (null and 0)返回null,而不是0。在 4.0.5 中,代码已被重新设计了,已便于在任何仍然使用优化情况下,返回值总是能如 ansi 所规定的那样。 or||-
逻辑或。
如果任何一个操作数是非零的,返回值为
1,如果任一操作数为null,返回值为null,否则返回0。mysql> select 1 || 1; -> 1 mysql> select 1 || 0; -> 1 mysql> select 0 || 0; -> 0 mysql> select 0 || null; -> null mysql> select 1 || null; -> 1 xor-
逻辑异或。
如果任一操作数为
null,返回值为null。对于非null的操作数,如果有奇数个非零的操作数,结果返回为1,否则返回0。mysql> select 1 xor 1; -> 0 mysql> select 1 xor 0; -> 1 mysql> select 1 xor null; -> null mysql> select 1 xor 1 xor 1; -> 1a xor b算术相等于(a and (not b)) or ((not a) and b)。xor在 mysql 4.0.2 中被添加。