• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > mysql 操作符

mysql 操作符

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了mysql,操作符等相关知识,希望本文的分享对您有所帮助

1. 操作符优先级

以下列表显示了操作符优先级的由低到高的顺序。排列在同一行的操作符具有相同的优先级。

:=

||, OR, XOR

&&, AND

NOT

BETWEEN, CASE, WHEN, THEN, ELSE

=, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN

|

&

<<, >>

-, +

*, /, DIV, %, MOD

^

- (一元减号), ~ (一元比特反转)

!

BINARY, COLLATE

注释:假如 HIGH_NOT_PRECEDENCE SQL 模式被激活,则 NOT 的优先级同 the ! 操作符相同。

2. 圆括号

( ... )使用括弧来规定表达式的运算顺序,例如:

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

3. 比较函数和操作符

比较运算产生的结果为1(TRUE)、0 (FALSE)或 NULL。这些运算可用于数字和字符串。根据需要,字符串可自动转换为数字,而数字也可自动转换为字符串。

本章中的一些函数 (如LEAST()和GREATEST()) 的所得值不包括 1 (TRUE)、 0 (FALSE)和 NULL。然而,其所得值乃是基于按照下述规则运行的比较运算:

MySQL按照以下规则进行数值比较:

若有一个或两个参数为 NULL,除非NULL-safe <=> 等算符,则比较运算的结果为NULL。

若同一个比较运算中的两个参数都是字符串,则按照字符串进行比较。

若两个参数均为整数,则按照整数进行比较。

十六进制值在不需要作为数字进行比较时,则按照二进制字符串进行处理。

假如参数中的一个为 TIMESTAMP 或 DATETIME 列,而其它参数均为常数, 则在进行比较前将常数转为 timestamp。这样做的目的是为了使ODBC的进行更加顺利。 注意,这不适合IN()中的参数!为了更加可靠,在进行对比时通常使用完整的 datetime/date/time字符串。

在其它情况下,参数作为浮点数进行比较。

在默认状态下,字符串比较不区分大小写,并使用现有字符集(默认为cp1252 Latin1,同时对英语也适合)。

为了进行比较,可使用CAST()函数将某个值转为另外一种类型。 使用CONVERT()将字符串值转为不同的字符集。

以下例子说明了比较运算中将字符串转为数字的过程:

mysql> SELECT 1 > '6x';

-> 0

mysql> SELECT 7 > '6x';

-> 1

mysql> SELECT 0 > 'x6';

-> 0

mysql> SELECT 0 = 'x6';

-> 1

注意,在将一个字符串列同一个数字进行比较时, MySQL 不能使用列中的索引进行快速查找。假如str_col 是一个编入索引的字符串列,则在以下语句中,索引不能执行查找功能:

SELECT * FROM tbl_name WHERE str_col=1;

其原因是许多不同的字符串都可被转换为数值 1: '1'、 ' 1'、 '1a'、 ……

=

等于:

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

<=>

NULL-safe equal.这个操作符和=操作符执行相同的比较操作,不过在两个操作码均为NULL时,其所得值为1而不为NULL,而当一个操作码为NULL时,其所得值为0而不为NULL。

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

-> 1, 1, 0

mysql> SELECT 1 = 1, NULL = NULL, 1 = NULL;

-> 1, NULL, NULL

<> !=

不等于:

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

IS boolean_value IS NOT boolean_value

根据一个布尔值来检验一个值,在这里,布尔值可以是TRUE、FALSE或UNKNOWN。

mysql> SELECT 1 IS TRUE, 0 IS FALSE, NULL IS UNKNOWN;

-> 1, 1, 1

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

-> 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

为了能够顺利的使用ODBC 程序工作,在使用IS NULL时,MySQL支持一下额外特性:

在一个值产生后,立即运行一个以下格式的语句,从而找到最新AUTO_INCREMENT 值的所在行:

o SELECT * FROM tbl_name WHERE auto_col IS NULL

当设置SQL_AUTO_IS_NULL=0时,这项操作无法运行。

对于命名为NOT NULL 的DATE 和DATETIME列,可通过使用如下的 语句找到特定日期 '0000-00-00':

o SELECT * FROM tbl_name WHERE date_column IS NULL

运行这一步需要使用一些 ODBC 应用软件,因为 ODBC本身不支持 一个 '0000-00-00'的时间值。

expr BETWEEN min AND max

假如expr大于或等于 min 且expr 小于或等于max, 则BETWEEN 的返回值为1,或是0。若所有参数都是同一类型,则上述关系相当于表达式 (min <= expr AND expr <= max)。其它类型的转换根据本章开篇所述规律进行,且适用于3种参数中任意一种。

mysql> SELECT 1 BETWEEN 2 AND 3;

-> 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)。

· COALESCE(value,...)

返回值为列表当中的第一个非 NULL值,在没有非NULL 值得情况下返回值为 NULL 。

mysql> SELECT COALESCE(NULL,1);

-> 1

mysql> SELECT COALESCE(NULL,NULL,NULL);

-> NULL

· GREATEST(value1,value2,...)

当有2或多个参数时,返回值为最大(最大值的)参数。比较参数所依据的规律同LEAST()相同。

mysql> SELECT GREATEST(2,0);

-> 2

mysql> SELECT GREATEST(34.0,3.0,5.0,767.0);

-> 767.0

mysql> SELECT GREATEST('B','A','C');

-> 'C'

在没有自变量为NULL的情况下,GREATEST()的返回值为NULL。

· expr IN (value,...)

若expr 为IN列表中的任意一个值,则其返回值为 1 , 否则返回值为0。假如所有的值都是常数,则其计算和分类根据 expr 的类型进行。这时,使用二分搜索来搜索信息。如IN值列表全部由常数组成,则意味着IN 的速度非常之快。如expr 是一个区分大小写的字符串表达式,则字符串比较也按照区分大小写的方式进行。

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

-> 0

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

-> 1

IN 列表中所列值的个数仅受限于 max_allowed_packet 值。

为了同SQL 标准相一致,在左侧表达式为NULL的情况下,或是表中找不到匹配项或是表中一个表达式为NULL 的情况下,IN的返回值均为NULL。

IN() 语构也可用书写某些类型的子查询。

· expr NOT IN (value,...)

这与NOT (expr IN (value,...))相同。

ISNULL(expr)

如expr 为NULL,那么ISNULL() 的返回值为 1,否则返回值为 0。

mysql> SELECT ISNULL(1+1);

-> 0

mysql> SELECT ISNULL(1/0);

-> 1

使用= 的NULL 值对比通常是错误的。

ISNULL() 函数同 IS NULL比较操作符具有一些相同的特性。请参见有关IS NULL 的说明。

· INTERVAL(N,N1,N2,N3,...)

假如N < N1,则返回值为0;假如N < N2 等等,则返回值为1;假如N 为NULL,则返回值为 -1 。所有的参数均按照整数处理。为了这个函数的正确运行,必须满足 N1 < N2 < N3 < ……< Nn 。其原因是使用了二分查找(极快速)。

mysql> SELECT INTERVAL(23, 1, 15, 17, 30, 44, 200);

-> 3

mysql&

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 分享下mysql各个主要版本之间的差异
  • MySQL essential版本和普通版本有什么区别?
  • redhat 5.4下安装MYSQL全过程
  • 如何用SQL命令查看Mysql数据库大小
  • 解析mysql中如何获得数据库的大小
  • 解析mysql修改为utf8后仍然有乱码的问题
  • 5个常用的MySQL数据库管理工具详细介绍
  • 解析在MySQL里创建外键时ERROR 1005的解决办法
  • 解析远程连接管理其他机器上的MYSQL数据库
  • mysql 精简过程(删除一些文件)

相关文章

  • 2017-05-11mysql错误处理之ERROR 1786 (HY000)
  • 2017-05-11mysql备份的三种方式详解
  • 2018-12-05MySQL视频教程的源码课件推荐
  • 2017-05-11mysql 常用命令用法总结脚本之家整理版
  • 2018-12-05关于数值处理的6篇文章推荐
  • 2018-12-05 mysql进阶(九)多表查询
  • 2018-12-05PHP运算符与操作符入门详解
  • 2018-12-05mysql千万级数据分页查询性能优化_Mysql
  • 2018-12-05MySQL中关于KEY与PRIMARY KEY以及UNIQUE KEY与INDEX的区别详解
  • 2018-12-05mysql教程:MySQL删除数据库

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • 如何接受客户端请求并调用处理函数
    • 分析SQL语句性能3种方法分享
    • MySQL 数据库函数库
    • 中文Access2000速成教程--1.4 使用“表向导”建立新表
    • MYSQL实现防止添加购物车重复的代码实例
    • mysql 常用数据库语句 小练习
    • Mysql相关_MySQL
    • INSERT INTO SELECT语句与SELECT INTO FROM语句的一些区别
    • mysql和Django配置以及数据库的简单操作
    • Linux下MySQL数据库自动备份的实用方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有