我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符
MYSQL中的运算符很多,这一节主要讲MYSQL中有的,而SQLSERVER没有的运算符
安全等于运算符(<=>)
这个操作符和=操作符执行相同的比较操作,不过<=>可以用来判断NULL值。
在两个操作数均为NULL时,其返回值为1而不为NULL;
而当一个操作数为NULL时,其返回值为0而不为NULL。
下面分别是 SELECT NULL <=>NULL 的执行结果
在两个操作数均为NULL时,其返回值为1而不为NULL;



LEAST运算符
语法格式为:LEAST(值1,值2,...值n),其中值n表示参数列表中有n个值。在有两个或多个参数的情况下,返回最小值。
假如任意一个自变量为NULL,则LEAST()的返回值为NULL
使用LEAST运算符进行大小判断,SQL语句如下:
,),LEAST(,NULL)

由结果可以看到,当参数中是整数或者浮点数时,LEAST将返回其中最小的值;
当参数为字符串时,返回字母中顺序最靠前的字符;
当比较值列表中有NULL时,不能判断大小,返回值为NULL
GREATEST运算符
语法格式为: GREATEST(值1,值2,...值n),其中n表示参数列表中有n个值。
在有两个或多个参数的情况下,返回最大值。
假如任意一个自变量为NULL,则GREATEST()的返回值为NULL
使用GREATEST运算符进行大小判断,SQL语句如下:
,),GREATEST(,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或者|
http://sqlfool.com/2009/02/bitwise-operations/
--DROP TABLE myTable
CREATE Table myTable
(
id ,)
, item )
, attributes int
);
Insert Into myTable
Union All
Union All
Union All
;
DECLARE @statusLookup Table
(
attribute int
, value )
);
Insert Into @statusLookup
, 'Red' Union All
, 'Blue' Union All
, 'Green' Union All
, 'Metal' Union All
, 'Plastic' Union All
, 'Plant' Union All
, 'Edible' Union All
, 'Non-Edible';
Select a.item, b.value
From myTable a
Cross Join @statusLookup b
Order By a.item
, b.value
异或运算符:XOR
当任意一个操作数为NULL时,返回值为NULL;对于非NULL的操作数,如果两个操作数都是非0值或者都是0值,则返回结果为0;
如果一个为0值,另一个为非0值,返回结果为1
使用异或运算符XOR进行逻辑判断,SQL语句如下
XOR , XOR , XOR , XOR XOR XOR

由结果可以看到‘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这个数字 )
二进制表示为:10100

同样 sqlserver也是有位运算符的,但是没有mysql那么多,如下
DECLARE @i BIT AS '按位或' AS '按位与' AS '按位异或' SELECT ~@i AS '非' SELECT ~@i AS '非'

特别提示
某一些MYSQL中的特殊字符需要用转义字符才能插入数据库,否则产生意料之外的结果。
下面的特殊字符需要在输入时加反斜线符号开头
输入单引号需要:\'
输入双引号需要:\''
输入反斜杠:\\
输入回车符:\r
输入换行符:\n
输入制表符:\tab
输入退格符:\b
在插入这些特殊字符到数据库之前一定要进行转义处理
在SQLSERVER里,这些特殊字符不是在前面加反斜杠\,而是加单引号'
例如插入一个单引号,加了反斜杠,插入成功
INSERT INTO table_1(NAME) VALUES('\'')
SELECT * FROM table_1

总结
这一节简单介绍了MYSQL里的一些运算符和特殊字符,并且比较了与SQLSERVER的区别
如有不对的地方,欢迎大家拍砖o(∩_∩)o
本文版权归作者所有,未经作者同意不得转载。
我的MYSQL学习心得(五) 运算符的更多相关文章
- 我的MYSQL学习心得(十五) 日志
我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 别人的的MYSQL学习心得(十五) 日志
我的MYSQL学习心得(十五) 日志 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
- 我的MYSQL学习心得(五)
原文:我的MYSQL学习心得(五) 我的MYSQL学习心得(五) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYSQL ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(三) 查看字段长度
我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(六) 函数
我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
- 我的MYSQL学习心得(七) 查询
我的MYSQL学习心得(七) 查询 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...
随机推荐
- 关于Unity3D自定义编辑器的学习
被人物编辑器折腾了一个月,最终还是交了点成品上去(还要很多优化都还么做). 刚接手这项工作时觉得没概念,没想法,不知道.后来就去看<<Unity5.X从入门到精通>>中有关于 ...
- UWP 律师查询 MVVM
APP简介 律师查询是基于聚合数据的律师查询接口做的,这个接口目前处于停用状态,但是,由于我是之前申请的,所以,还可以用,应该是无法再申请了. 效果图 开发 一.HttpHelper 既然是请求接口的 ...
- WebApi接口 - 响应输出xml和json
格式化数据这东西,主要看需要的运用场景,今天和大家分享的是webapi格式化数据,这里面的例子主要是输出json和xml的格式数据,测试用例很接近实际常用情况:希望大家喜欢,也希望各位多多扫码支持和点 ...
- 谈谈一些有趣的CSS题目(九)-- 巧妙的实现 CSS 斜线
开本系列,谈谈一些有趣的 CSS 题目,题目类型天马行空,想到什么说什么,不仅为了拓宽一下解决问题的思路,更涉及一些容易忽视的 CSS 细节. 解题不考虑兼容性,题目天马行空,想到什么说什么,如果解题 ...
- atitit.管理学三大定律:彼得原理、墨菲定律、帕金森定律
atitit.管理学三大定律:彼得原理.墨菲定律.帕金森定律 彼得原理(The Peter Principle) 1 彼得原理解决方案1 帕金森定律 2 如何理解墨菲定律2 彼得原理(The Pete ...
- vim+vundle配置
Linux环境下写代码虽然没有IDE,但通过给vim配置几个插件也足够好用.一般常用的插件主要包括几类,查找文件,查找符号的定义或者声明(函数,变量等)以及自动补全功能.一般流程都是下载需要的工具,然 ...
- C#跨平台手机应用开发工具Xamarin尝试 与Eclipse简单对比
Xamarin 支持使用C#开发基于Android.IOS.WindowsPhone应用开发,最大特点C#+跨平台,详细说明问度娘. 安装 研究 想体验研究的点击查看页面 Xamarin For Vi ...
- JS中给正则表达式加变量
前不久同事询问我js里面怎么给正则中添加变量的问题,遂写篇博客记录下. 一.字面量 其实当我们定义一个字符串,一个数组,一个对象等等的时候,我们习惯用字面量来定义,例如: var s = &quo ...
- Java 开发主流 IDE 环境体验
前言 本来应该继续从 Oracle 官网搬砖的,但是随着示例代码越来越复杂,涉及的类库越来越多,使用 Vim 写 Java 代码就很力不从心了,是时候上 IDE 了.我最熟悉的 IDE 环境是 Ecl ...
- 如何利用 Visual Studio 自定义项目或工程模板
在开发项目的时候,由其是商业性质的大型项目时,往往需要在每个代码文件上都加上一段关于版权.开发人员的信息,并且名称空间上都需要带有公司的标志.这个时候,是选择在开发的时候手动添加还是自动生成呢? 我们 ...