6.3 用于 select 和 where 子句的函数
一个 sql 语句中的 select_expression 或 where_definition 可由任何使用了下面所描述函数的表达式组成。
包含 null 的表达式总是得出一个 null 值结果,除非表达式中的操作和函数在文档中有另外的说明。
注意:在一个函数名和跟随它的括号之间必须不存在空格。这有助于 mysql 语法分析程序区分函数调用和对恰巧与函数同名表或列的引用。然而,参数左右两边的空格却是允许的。
你可以强制 mysql 接受函数名后存在空格的形式,这需要通过以 --ansi 选项启动 mysqld,或在 mysql_connect() 中使用 client_ignore_space,但是,在这种情况下,所有的函数名均将成为保留字。查看章节 1.8.2 以 ansi 模式运行 mysql.
为了简洁,从 mysql 程序输出的例子以缩写的形式显示。因此:
mysql> select mod(29,9);
1 rows in set (0.00 sec)
+-----------+
mod(29,9)
+-----------+
2
+-----------+
将被显示为这样:
mysql> select mod(29,9);
-> 2
6.3.1 无类型的特殊运算符和函数
6.3.1.1 圆括号
( ... )
括号,使用它来强制一个表达式的计算顺序。
mysql> select 1+2*3;
-> 7
mysql> select (1+2)*3;
-> 9
6.3.1.2 比较运算符
比较运算符的结果是 1 (true)、0 (false) 或 null。这些函数可工作于数字和字符串上。根据需要,字符串将会自动地被转换到数字,以及数字被转换成字符串(比如在 perl 中)。
mysql 使用下列规则进行比较:
* 如果一个或两个参数是 null,比较的结果是 null,除了 <=> 运算符。
* 如果在一个比较操作中两个参数均是字符串,他们将作为字符串被比较。
* 如果两个参数均是整数,他们作为整数被比较。
* 十六进制值如果不与一个数字进行比较,那么它将当作一个二进制字符串。
* 如果参数之一是一个 timestamp 或 datetime 列,而另一参数是一个常数,在比较执行之前,这个常数被转换为一个时间戳。这样做是为了对 odbc 更友好。
* 在所有其它情况下,参数作为浮点(real)数字被比较。
缺省地,字符串使用当前字符集以忽略字母大小写的方式进行比较(缺省的字符集为 iso-8859-1 latin1,它对英语处理得很出色)。
下面的例子演示了对于比较操作字符串到数字的转换:
mysql> select 1 > '6x';
-> 0
mysql> select 7 > '6x';
-> 1
mysql> select 0 > 'x6';
-> 0
mysql> select 0 = 'x6';
-> 1
=
等于:
mysql> select 1 = 0;
-> 0
mysql> select '0' = 0;
-> 1
mysql> select '0.0' = 0;
-> 1
mysql> select '0.01' = 0;
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器