广

MYSQL

  • MYSQL
  • MSSQL
  • Redis
  • MongoDB
  • oracle数据库
  • 数据管理

    Mysql入门系列:MYSQL表达式求值和MYSQL类型转换

    2018-04-16 10:56:56 次阅读 稿源:互联网
    零七网广告
    全网推广平台,软文发布

      2.4 表达式求值和类型转换

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

      

      所选择的每列给出了一个表达式,如WHERE 子句中所示的那样。表达式也出现在DELETE 和UPDATE语句的WHERE 子句中,以及出现在INSERT 语句的VALUES( ) 子句中。

      在MySQL遇到一个表达式时,它对其求值得出结果。例如, (4 * 3)/(4 - 2) 求值得6。表达式求值可能涉及类型转换。例如, MySQL在数960821用于需要日期值的环境时,将其转换为日期“ 19 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 - 16所示,对表达式进行估计以确定其为真(非零)或假(零)。MySQL包含有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 位)整数值进行。

    零七网部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与零七网进行文章共享合作。

    零七网广告
    零七网广告
    零七网广告
    零七网广告