首 页 ┆ 源码下载 ┆ IT学院 ┆ 字体下载 ┆ 模板下载 ┆ 源码发布 ┆ 广告合作 ┆ 网站地图 ┆ 虚拟主机 ┆ 中文域名
► 设为首页
► 加入收藏
► 联系我们
源码下载 >> ASP源码 | PHP源码 | ASP.net源码 | JSP源码 | CGI源码 | VC/C++源码 | VB源码 | Delphi源码 | Flash源码
文章学院 >> 网络编程 | 网页设计 | 图形图象 | 数据库 | 服务器 | 网络媒体 | 网络安全 | 操作系统 | 办公软件 | 软件开发 | 黑客知识
字体下载 >> 精制字体 | 非英字体 | 艺术字体 | 著名字体 | 哥特式 | 简单字体 | 手写体 | 节假日 | 图案字体 | 精度像素 | 中文字体
模板下载 >> 企业门户 | 数码网络 | 休闲娱乐 | 影视音乐 | 旅游名胜 | 文化艺术 | 电子商务 | 个性展示 | 登陆导航 | Flash模板
►►您当前的位置:源码园 → IT学院 → 数据库 → MySQL → 文章内容

MySQL数据库技术(10)

作者:佚名  来源:不详  发布时间:2007-2-7 11:21:24
 

  2.4 表达式求值和类型转换
    MySQL 允许编写包括常量、函数调用和表列引用的表达式。这些值可利用不同类型的运算符进行组合,诸如算术运算符或比较运算符。表达式的项可用圆括号来分组。表达式在SELECT 语句的列选择列表和WHERE 子句中出现得最为频繁,如下所示:

    所选择的每列给出了一个表达式,如WHERE 子句中所示的那样。表达式也出现在DELETE 和U P D ATE 语句的WHERE 子句中,以及出现在I N S E RT 语句的VALUES( ) 子句中。
    在MySQL 遇到一个表达式时,它对其求值得出结果。例如, (4 * 3)/(4 - 2) 求值得6。表达式求值可能涉及类型转换。例如, MySQL 在数960821 用于需要日期值的环境时,将其转换为日期“ 1 9 9 6 - 0 8 - 2 1”。本节讨论怎样编写MySQL 的表达式,以及在表达式求值中MySQL 所使用的类型转换规则。每个MySQL 的运算符都介绍过了,但MySQL 有那么多的函数,我们只接触过几个。每个运算符和函数的进一步介绍可参阅附录C。
    2.4.1 撰写表达式
    表达式可以只是一个简单的常量,如:
    0 数值常量
    “a b c” 串常量
    表达式可以进行函数调用。有的函数需要参数(圆括号中有值),而有的不需要。多个参数应该用逗号分隔。在调用一个函数时,参数旁边可以有空格,但在函数名与圆括号间不能有空格。下面是一些函数例子:
  NOW( ) 无参数函数
    STRCMP (“a b c”, “d e f”) 有两个参数的函数
    STRCMP( “a b c”, “d e f”) 参数旁边有空格是合法的
    STRCMP (“a b c”, “d e f”) 函数名后跟空格是不合法的
    如果函数名后有一个空格, MySQL 的分析程序可能会将函数名解释为一个列名(函数名不是保留字,如果需要的话,可将它们用作列名)。其结果是出现一个语法错误。表达式中可使用表列。最简单的情形是,当某个列所属的表在上下文中是明确的,则可简单地给出列名对该列进行引用。下面的每个SELECT 语句中惟一地出了一个表名,因此,列的引用无歧义:

    如果使用哪个表的列不明确,可在列名前加上表名。如果使用哪个数据库中的表也不明确的话,可在表名前加上数据库名。如果只是希望意思更明显,也可以在无歧义的上下文中利用这种更为具体的表示形式,如:

    总之,可以组合所有这些值以得到更为复杂的表达式。
    1. 运算符的类型
    MySQL 有几种类型的运算符,可用来连接表达式的项。算术运算符,如表2-15 所示,一般包括加、减、乘、除以及模运算符。在两个操作数都是整数时,“+”、“-”和“ *”算术运算用BIGINT(64 位)整数值来完成。而在结果预期为一个整数时,“/”和“%”也是用BIGINT(64 位)整数值来完成的。应该认识到,如果某个运算涉及更大的值,如结果超过64 位,其结果不可预料。

    逻辑运算符如表2 - 1 6所示,对表达式进行估计以确定其为真(非零)或假(零)。M y S Q L包含有C 风格的“& &”、“| |”和“!”运算符,可替换A N D、OR 和N O T。要特别注意“| |”运算符,ANSI SQL 指定“| |”作为串连接符,但在MySQL 中,它表示一个逻辑或运算。如果执行下面的查询,则返回数0:

    MySQL 为进行运算,将“ a b c”和“d e f”转换为整数,且两者都转换为0, 0与0进行或运算,结果为0。在MySQL 中,必须用CONCAT (“a b c”, “d e f”) 来完成串的连接。

    位运算符如表2-17 所示,完成按位“与”和“或”,其中结果的每一位按两个操作数的对应位的逻辑AND 或OR 求值。还可以进行位的左移或右移。位运算用BIGINT(64 位)整数值进行。

    比较运算符如表2-18 所示,其中包括测试相对大小或数和串的顺序的运算符,以及完成模式匹配和测试NULL 值的运算符。“< = >”运算符是MySQL 特有的,在MySQL 3.23版本中引入。


   自MySQL 3.23版本起,可使用B I N A RY 运行符,此运算符可用来将一个串转换为一个二进制串,这个串在比较中是区分大小写的。下列的第一个比较是不区分大小写的,但第二个和第三个比较是区分大小写的:

    没有相应的NOT BINARY 计算。如果希望使一个列既能在区分大小写又能在不区分大小写的环境中使用,则应该利用不区分大小写的列并对希望区分大小写的比较使用BINARY。对于利用二进制串类型(CHAR BINARY、VARCHAR BINARY 和BLOB 类型)定义的列,其比较总是区分大小写的。为了对这样的列类型实现不区分大小写的比较,可利用UPPER( ) 或LOWER( ) 来转换成相同的大小写:

    对于不区分大小写的串比较,有可能把多个字符认为是相等的,这取决于所用的字符集。例如“e”和“é”对于比较和排序操作可能是相同的。二进制(区分大小写)比较利用字符的ASCII 值来完成。
    模式匹配允许查找值而不必给出精确的直接值。MySQL 利用LIKE 运算符和通配符“%”(匹配任意的字符序列)和“ _”(匹配任意单个字符),提供SQL 的模式匹配。MySQL 还基于类似于诸如g r e p、sed 和vi 等UNIX 程序中所用的REGEXP 运算符和扩展正规表达式,提供模式匹配。为了完成模式匹配,必须使用这些模式匹配运算符中的某一个;不能使用“ =”。为了进行相反的模式匹配,可使用NOT LIKE 或NOT REGEXP。
    除了使用的模式运算符和模式字符不同外,这两种模式匹配还在以下重要的方面存在差异:
    ■ 除非至少有一个操作数为二进制串,否则LIKE 是不区分大小写的。REGEXP 是区分大小写的。(在MySQL 3.23.4 以后的版本中,除非至少有一个操作数是二进制串,否则REGEXP 是不区分大小写的。)
    ■ 仅当整个串匹配,SQL 才是模式匹配的。仅当相应的模式在串中某一处出现,正规表达式才匹配。用于LIKE 运算符的模式可以包括“%”和“_”通配符。例如,模式“ F r a n k %”与任何以“F r a n k”起头的串匹配:

    通配符“%”与任何串匹配,其中包括与空字符序列匹配,因此“ Frank %”与

[1] [2] [3]  下一页

[] [返回上一页] [打 印]
  • 上一篇文章:MySQL数据库技术(09)
  • 下一篇文章:MySQL数据库技术(11)

  • 相关文章:
  • [图文]JSP+MYSQL+Java类优化分页
  • Linux服务器配置方案MySQL
  • [图文]HP工程师经验分享(10)
  • 编译APACHE+PHP+MYSQL的一个脚本
  • 我的mysql筆記
  • 用rpm包装Mysql
  • [图文]mysql问题
  • 数据库管理员的难题,选择MySQL还是SQLServer
  • MySQL的远程连接出现错误提示分析
  • 利用crontab,系统每天定时备份mysql数据库
  • windows 环境下配置apache+mysql+php
  • php_mysql.dll不能注册的解决方法
关于本站 - 网站帮助 - 广告合作 - 下载声明 - 友情连接 - 网站地图 - 源码发布
Copyright © 2003-2009 Ymyasp.Com. All Rights Reserved .
备案序号:粤ICP备07029071号