MYSQL中的运算符很多,这一节主要讲MYSQL中有的,而SQLSERVER没有的运算符

安全等于运算符(<=>)

这个操作符和=操作符执行相同的比较操作,不过<=>可以用来判断NULL值。

在两个操作数均为NULL时,其返回值为1而不为NULL;

而当一个操作数为NULL时,其返回值为0而不为NULL。

下面分别是 SELECT NULL <=>1   SELECT 1<=>0  SELECT NULL <=>NULL 的执行结果

在两个操作数均为NULL时,其返回值为1而不为NULL;

LEAST运算符

语法格式为:LEAST(值1,值2,...值n),其中值n表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。

假如任意一个自变量为NULL,则LEAST()的返回值为NULL

使用LEAST运算符进行大小判断,SQL语句如下:

SELECT LEAST(2,0),LEAST('a','b','c'),LEAST(10,NULL)

由结果可以看到,当参数中是整数或者浮点数时,LEAST将返回其中最小的值;

当参数为字符串时,返回字母中顺序最靠前的字符;

当比较值列表中有NULL时,不能判断大小,返回值为NULL

GREATEST运算符

语法格式为: GREATEST(值1,值2,...值n),其中n表示参数列表中有n个值。

在有两个或多个参数的情况下,返回最大值。

假如任意一个自变量为NULL,则GREATEST()的返回值为NULL

使用GREATEST运算符进行大小判断,SQL语句如下:

SELECT GREATEST(2,0),GREATEST('a','b','c'),GREATEST(10,NULL)

由结果可以看到,当参数中是整数或者浮点数时,GREATEST将返回其中最大的值;

当参数为字符串时,返回字母中顺序最靠后的字符;

当比较值列表中有NULL时,不能判断大小,返回值为NULL

REGEXP 运算符

在SQLSERVER里是没有正则函数或者运算符的,MYSQL在这方面的确比较完善

用来匹配字符串,语法格式为:expr REGEXP  匹配条件,如果expr满足匹配条件,返回1;

如果不满足,则返回0;

若expr或匹配条件任意一个为NULL,则结果为NULL

常用的几种通配符:

(1)'^'匹配以该字符后面的字符开头的字符串

(2)'$'匹配以该字符后面的字符结尾的字符串

(3)'.'匹配任何一个单字符

(4)'[...]'匹配在方括号内的任何字符。例如,“[abc]" 匹配a、b或c。

字符的范围可以使用一个'-',“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字

(5)'*' 匹配零个或多个在他前面的字符。例如,“x*”匹配任何数量的'*'字符,“[0-9]*”匹配任何数量的数字,

而“.*”匹配任何数量的任何字符。

使用REGEXP  运算符进行字符串匹配运算,SQL语句如下:

SELECT 'ssky' REGEXP '^s','ssky' REGEXP 'y$' ,'ssky' REGEXP '.sky','ssky' REGEXP '[ab]';

由结果可以看到,指定匹配字符串为ssky。

'^s'表示匹配任何以字母s开头的字符串,因此满足匹配条件,返回1;

'y$'表示匹配任何以字母y结尾的字符串,因此满足匹配条件,返回1;

'.sky'表示匹配任何以sky结尾,字符长度为4的字符串,因此满足匹配条件,返回1;

'^s'表示匹配任何以字母s开头的字符串,因此满足匹配条件,返回1;

'[ab]'表示匹配任何包含字母a或者b的字符串,指定字符串中没有字母a也没有字母b,因此不满足匹配条件,返回0;

TIPS:正则表达式是一个可以进行复杂查询的强大工具,相对于LIKE字符串匹配,他可以使用更多的通配符类型

查询结果更加灵活。

逻辑运算符

逻辑与运算符:AND或者&&

逻辑或运算符:OR或者||

上面两个运算符就不说了

在SQLSERVER里,与运算符是AND或者& ;或运算符是OR或者|

 View Code

异或运算符:XOR

当任意一个操作数为NULL时,返回值为NULL;对于非NULL的操作数,如果两个操作数都是非0值或者都是0值,则返回结果为0;

如果一个为0值,另一个为非0值,返回结果为1

使用异或运算符XOR进行逻辑判断,SQL语句如下

SELECT 1 XOR 1, 0 XOR 0,1 XOR 0,1 XOR NULL,1 XOR 1 XOR 1

由结果可以看到‘1 XOR 1’和‘0 XOR 0’中运算符两边的操作数都为非零值,或者都是零值,因此返回0;

'1 XOR 0'中两边的操作数,一个为0值,另一个为非0值,返回结果为1;

'1 XOR NULL'中有一个操作数为NULL,返回结果为NULL;

'1 XOR 1 XOR 1'中有多个操作数,运算符相同,因此运算符从左到右依次计算,'1 XOR 1'的结果为0,再与1进行异或运算,因此结果为1。

TIPS: a XOR b的计算等同于(a AND (NOT b))或者(NOT a AND ( b))

位运算符

由于比较少用到,这里只做简单介绍

位运算符是用来对二进制字节中的位进行测试、移位或者测试处理

MYSQL中提供的位运算有

按位或(|)

按位与(&)

按位异或(^)

按位左移(<

按位右移(>>)

按位取反(~):反转所有比特

TIPS:可以使用BIN()=binary函数查看一个十进制数的二进制表示

例如20这个数字 SELECT BIN(20)

二进制表示为:10100

同样 sqlserver也是有位运算符的,但是没有mysql那么多,如下

DECLARE @i BIT

SET @i=0

SELECT @i | 3 AS '按位或'

SELECT @i & 3 AS '按位与'

SELECT @i ^ 3 AS '按位异或'

SELECT ~@i AS '非'

SET @i=1

SELECT ~@i AS '非'

特别提示

某一些MYSQL中的特殊字符需要用转义字符才能插入数据库,否则产生意料之外的结果。

下面的特殊字符需要在输入时加反斜线符号开头

输入单引号需要:\'

输入双引号需要:\''

输入反斜杠:\\

输入回车符:\r

输入换行符:\n

输入制表符:\tab

输入退格符:\b

在插入这些特殊字符到数据库之前一定要进行转义处理

在SQLSERVER里,这些特殊字符不是在前面加反斜杠\,而是加单引号'

例如插入一个单引号,加了反斜杠,插入成功

INSERT INTO table_1(NAME) VALUES('\'')

SELECT * FROM table_1

总结

这一节简单介绍了MYSQL里的一些运算符和特殊字符,并且比较了与SQLSERVER的区别

mysql 运算符转义_我的MYSQL学习心得(五) 运算符相关推荐

  1. BT源代码学习心得(五):统一网络服务接口--RawServer -- 转贴自 wolfenstein (NeverSayNever)

    BT源代码学习心得(五):统一网络服务接口--RawServer author:wolfenstein 以后的部分都需要网络服务(种子文件的生成在本地就可以完成,但是通过这些种子文件下载实际的内容和提 ...

  2. mysql 硬负载_为啥单机MySQL又遭遇瓶颈?MySQL主从复制替你解决单机问题

    成长是一棵树,总是在你不知不觉的情况下快乐长大:成长是一株草,总是在你不知不觉的情况下长满大地:成长是一朵花,总是在你不知不觉的情况下开满山头. 这不,随着时间的迁移.项目网站的用户量.数据量持续上升 ...

  3. mysql数据库算法_数据库:MySQL索引背后的数据结构及算法原理【转】

    原文:http://blog.codinglabs.org/articles/theory-of-mysql-index.html 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话 ...

  4. mysql炸包_炸裂!MySQL 82 张图带你飞

    之前两篇文章带你了解了 MySQL 的基础语法和 MySQL 的进阶内容,那么这篇文章我们来了解一下 MySQL 中的高级内容. 其他文章: 本文思维导图如下. 事务控制和锁定语句 我们知道,MyIS ...

  5. mysql 性能分析_十大MySQL性能分析工具汇总!专治MySQL性能瓶颈

    前言 MySQL 数据库最常见的两个瓶颈是CPU和I/O的瓶颈.CPU在饱和的时候一般发生在数据装入内存或从磁盘上读取数据时候,磁盘I/O瓶颈发生在装入数据远大于内存容量的时候. MySQL数据库性能 ...

  6. mysql账号认证_浅谈MySQL用户账号认证方式

    为了有效控制数据库用户的访问权限,在MySQL数据库中创建了一个新用户,但使用刚创建的用户和密码却发现连接不了MySQL数据库,通过查看官网手册及<MySQL技术内幕>一书,才逐渐熟悉My ...

  7. mysql 获取当前日期_详解mysql 获取当前日期及格式化

    本篇文章主要介绍了mysql 获取当前日期及格式化,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. MySQL 获取当前日期及日期格式 获取系统日期: NOW() 格式化日期: DATE_FORM ...

  8. mysql双机部署_双机部署Mysql主从同步

    提前准备两台机器(200M+内存),假定为A.B  ●要求:在A,B上分别安装部署mysql双实例,端口为3306,3307.  ●要求:       完成3306端口A--->B的mysql主 ...

  9. mysql替换开头_如何在MySQL的字符串开头搜索和替换特定字符?

    为此,您可以使用INSERT().让我们首先创建一个表-mysql> create table DemoTable -> ( -> ZipCode varchar(200) -> ...

最新文章

  1. Leetcode-第 73 场双周赛
  2. EnterpriseLibrary数据访问(4)使用数据访问器接收数据
  3. 递归函数与二分查找算法
  4. quick time不可用是什么意思_农村谚语“不可不算,不可全算”是什么意思?
  5. pe擦除服务器硬盘,怎么彻底删除硬盘数据
  6. mouse without borders其他选择中英对照说明
  7. shell命令查阅端口信息_Powershell 执行外部命令
  8. python外汇兑换代码_Python爬取中国银行外汇牌价
  9. 如何关闭任务栏中chrome浏览器的通知图标
  10. 智能车图像处理逆透视教程
  11. self-redemption
  12. SpringBoot之自动装配原理
  13. 三角形边长求高的c语言函数公式,c 求,已知三角形三边边长为abc,利用公式求面积...
  14. 2021年R2移动式压力容器充装考试题及R2移动式压力容器充装考试试卷
  15. 每日 30 秒 ⏱ 复制内容到剪贴板
  16. [概念]PMP,项目管理
  17. 测绘工程与计算机论文,测绘工程毕业论文.doc
  18. ios开发循环网络请求_iOS开发--HTTP的网络请求状态代码详解
  19. 移动应用UI设计(上)
  20. mybatis二级缓存

热门文章

  1. IBatisNet概述[整理]
  2. 在 Ubuntu 中使用 GDebi 快速安装 DEB 包
  3. Linux平台OpenGL之helloworld(十)
  4. Android8.0 HIDL绑定式和直通式区别
  5. Android上Sensor移植的总结
  6. Android wakelock机制
  7. [vue-router] Duplicate named routes definition
  8. windows桌面待办事项_想拒绝拖延症?你还缺一款云同步提醒的的桌面便签软件!...
  9. modbus通讯协议编程实例_三菱PLC CC-LINK通讯编程实例分享,看完你就会了
  10. msc51单片机计数器c语言,mcs51单片机计数器工作方式1 计数初值计算与定时编程举例...