php开源嘛
首页 | English | MySql数据库 | Php编程 | 建站杂烩 | 系统服务器 | 资源共享 | 专题 | 才桀网 | 支持论坛
  当前位置:主页>MySql数据库>文章内容
用于SELECT和WHERE子句的SQL函数
来源:网络 作者:本站整理 发布时间:2007-06-18  

用于SELECT和WHERE子句的SQL函数phpma

一个 SQL 语句中的 select_expression 或 where_definition 可由任何使用了下面所描述函数的表达式组成。phpma

包含 NULL 的表达式总是得出一个 NULL 值结果,除非表达式中的操作和函数在文档中有另外的说明。

注意:在一个函数名和跟随它的括号之间必须不存在空格。这有助于 MySQL 语法分析程序区分函数调用和对恰巧与函数同名表或列的引用。然而,参数左右两边的空格却是允许的。

你可以强制 MySQL 接受函数名后存在空格的形式,这需要通过以 --ansi 选项启动 mysqld,或在 mysql_connect() 中使用 CLIENT_IGNORE_SPACE,但是,在这种情况下,所有的函数名均将成为保留字。查看章节 1.8.2 以 ANSI 模式运行 MySQL.

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

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 无类型的特殊运算符和函数phpma
6.3.1.1 圆括号

( ... )

括号,使用它来强制一个表达式的计算顺序。phpma

mysql> SELECT 1+2*3;
-> 7
mysql> SELECT (1+2)*3;
-> 9

6.3.1.2 比较运算符

比较运算符的结果是 1 (TRUE)、0 (FALSE) 或 NULL。这些函数可工作于数字和字符串上。根据需要,字符串将会自动地被转换到数字,以及数字被转换成字符串(比如在 Perl 中)。

MySQL 使用下列规则进行比较:phpma

* 如果一个或两个参数是 NULL,比较的结果是 NULL,除了 <=> 运算符。phpma
* 如果在一个比较操作中两个参数均是字符串,他们将作为字符串被比较。
* 如果两个参数均是整数,他们作为整数被比较。
* 十六进制值如果不与一个数字进行比较,那么它将当作一个二进制字符串。
* 如果参数之一是一个 TIMESTAMP 或 DATETIME 列,而另一参数是一个常数,在比较执行之前,这个常数被转换为一个时间戳。这样做是为了对 ODBC 更友好。
* 在所有其它情况下,参数作为浮点(real)数字被比较。 phpma

缺省地,字符串使用当前字符集以忽略字母大小写的方式进行比较(缺省的字符集为 ISO-8859-1 Latin1,它对英语处理得很出色)。

下面的例子演示了对于比较操作字符串到数字的转换:phpma

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;
-> 0
mysql> SELECT '.01' = 0.01;
-> 1

<>
!=
不等于:

mysql> SELECT '.01' <> '0.01';
-> 1
mysql> SELECT .01 <> '0.01';
-> 0
mysql> SELECT 'zapp' <> 'zappp';
-> 1

<=
小于或等于:

mysql> SELECT 0.1 <= 2;
-> 1

<
小于:

mysql> SELECT 2 < 2;
-> 0

>=
大于或等于:

mysql> SELECT 2 >= 2;
-> 1

>
大于:

mysql> SELECT 2 > 2;
-> 0

<=>
NULL 值安全等于:

mysql> SELECT 1 <=> 1, NULL <=> NULL, 1 <=> NULL;
-> 1 1 0

IS NULL
IS NOT NULL
测试一个值是或不是 NULL:

mysql> SELECT 1 IS NULL, 0 IS NULL, NULL IS NULL;
-> 0 0 1
mysql> SELECT 1 IS NOT NULL, 0 IS NOT NULL, NULL IS NOT NULL;
-> 1 1 0

为了能够与其它程序更好的工作,在使用 IS NULL 是 MySQL 支持下列额外选择性:

* 通过它,你可以找到最后插入的记录行:

SELECT * FROM tbl_name WHERE auto_col IS NULL

这个操作可以通过设置 SQL_AUTO_IS_NULL=0 来禁止。查看章节 5.5.6 SET 句法.phpma
* 对于 NOT NULL 的 DATE 和 DATETIME 列,可以通过使用下列语句找到特殊的值 0000-00-00:

SELECT * FROM tbl_name WHERE date_column IS NULL

这需要通过某些 ODBC 应用程序才能工作(因为 ODBC 不支持一个 0000-00-00 日期)

expr BETWEEN min AND maxphpma
如果 expr 大于或等于 min ,并且 expr 小于或等于 max,BETWEEN 返回 1,否则返回 0。它等价于表达式 (min <= expr AND expr <= max) ,只要所有的参数均是相同的类型。 否则类型会依照上面的规则发生转换,但是应用于所有三个参数。注意,在 MySQL 4.0.5 之前,参数被转换到 expr 的类型。

mysql> SELECT 1 BETWEEN 2 AND 3;phpma
-> 0
mysql> SELECT 'b' BETWEEN 'a' AND 'c';
-> 1
mysql> SELECT 2 BETWEEN 2 AND '3';
-> 1
mysql> SELECT 2 BETWEEN 2 AND 'x-3';
-> 0

expr NOT BETWEEN min AND max
等同于 NOT (expr BETWEEN min AND max)。

expr IN (value,...)
如果 expr 是 IN 列表中的作一值,它将返回 1,否则返回 0。如果所有的值均是常数,那么所有的值被依照 expr 的类型进行计算和排序。然后以一个二进制搜索方式完成项目的搜索。这就意味着,如果 IN 列表完全由常数组成,IN 将是非常快的。如果 expr 是一个字母大小写敏感的字符串表达式,字符串比较将以大小写敏感方式执行:phpma

mysql> SELECT 2 IN (0,3,5,'wefwf');
-> 0
mysql> SELECT 'wefwf' IN (0,3,5,'wefwf');
-> 1

从 MySQL 4.1 开始(符合 SQL-99 标准),如果左手边的表达式是 NULL,或者在列表中没有发现相匹配的值并且列表中的一个表达式是 NULL,IN 均返回 NULL。

expr NOT IN (value,...)
等同于 NOT (expr IN (value,...))。phpma

ISNULL(expr)
如果 expr 是 NULL,ISNULL() 返回 1,否则返回 0:

mysql> SELECT ISNULL(1+1);
-> 0
mysql> SELECT ISNULL(1/0);
-> 1

注意,对 NULL 值使用 = 进行比较总是为 false !
COALESCE(list)
返回列表中第一个非 NULL 的元素:
(阅读次数:

共12页: 上一页 1 [2] [3] [4] [5] [6] [7] [8] [9] [10] [11] [12] 下一页
上一篇:Linux/Unix下ODBC的安装、配置与编程   下一篇:怎么备份MySQL数据库
[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论
  热点文章
·MySQL索引分析和优化
·MySQL数据库下.frm .MYD .MYI损
·怎么删除MySQL数据库中的重复数
·MySQL数据导入与导出
·MySQL数据库中SQL查询语句精华
·如何优化MySQL数据库性能
·MySQL查询优化之查询优化器
·怎么备份MySQL数据库
·如何导入导出*.sql文件到MySQL数
·MySQL数据导入导出方法与工具介
·MySQL索引分析和优化加速网站访
·SQL Server执行SQL语句时内存占
  相关文章
·怎么备份MySQL数据库
·MySQL索引分析和优化
·小技巧:怎样在Mysql中直接储存
·MySQL数据导入与导出
·各种MySQL客户环境变量程序概述
·mysql常用经典操作
·MySQL优化简明指南
·MySQL高级特性之一事务处理
·MySQL创建数据库和数据库表
·MySQL数据库学习笔记
·Mysql日期和时间函数不求人
·MySQL ODBC进行MySQL和SQL Serve

关于我们 | 本站声明 | 友情连接 | 诚邀加盟 | 网站地图
版权Power by DedeCms   技术支持QQ =>> 罗江游鱼   Jacking  后台登陆
Copyright @ 2007 公司地址:柳州市东环路268号 邮编:545006 电话:15920389818 桂ICP备07006725号