服务器 频道

SELECT和WHERE子句中的函数

   【IT168 服务器学院
    在一个SQL语句中的select_expression或where_definition可由使用下面描述的函数的任何表达式组成。

    包含NULL的一个表达式总是产生一个NULL值,否则除非表达式所包含的操作符和函数在文档中说明。

    注意:在一个函数名和跟随它的括号之间不许没有空格。这帮助MySQL分析器区分函数调用和具有相同名字的对表或列的引用,尽管允许在参数周围有空格。

为了简洁,例子以缩写形式显示从mysql程序输出。因此:

mysql> select MOD(29,9);
1 rows in set (0.00 sec)

+-----------+
| mod(29,9) |
+-----------+
|         2 |
+-----------+

被显示为这样:

mysql> select MOD(29,9);
        -> 2

    分组函数
( ... )
括号。使用它们来强制在一个表达式的计算顺序。
mysql> select 1+2*3;
        -> 7
mysql> select (1+2)*3;
        -> 9

    常用的算术操作
    一般的算术操作符是可用的。注意在-、+和*情况下,如果两个参数是整数,结果用BIGINT(64位)精度计算!  

+
加法
mysql> select 3+5;
        -> 8

-
减法
mysql> select 3-5;
        -> -2 
*
乘法
mysql> select 3*5;
        -> 15
mysql> select 18014398509481984*18014398509481984.0;
        -> 324518553658426726783156020576256.0
mysql> select 18014398509481984*18014398509481984;
        -> 0


    最后一个表达式的结果是不正确的,因为整数乘积的结果超过用BIGINT计算的64位范围。

/
除法
mysql> select 3/5;
        -> 0.60

被零除产生一个NULL结果:

mysql> select 102/(1-1);
        -> NULL

    一个除法用BIGINT算术计算,只要在它的结果被转换到一个整数的上下文中执行!

     位函数
    MySQL为位操作使用BIGINT(64位)算法,因此这些操作符有最大64位的一个范围。

|
位或
mysql> select 29 | 15;
        -> 31

&
位与
mysql> select 29 & 15;
        -> 13
 
<<
左移位一个长(BIGINT)数字。
mysql> select 1 << 2
        -> 4
 
>>
右移位一个长(BIGINT)数字。
mysql> select 4 >> 2
        -> 1
~
颠倒所有的位。
mysql> select 5 & ~1
        -> 4
 
BIT_COUNT(N)
返回在参数N设定的位的数量。
mysql> select BIT_COUNT(29);
        -> 4

0
相关文章