与MSSQL对比学习MYSQL的心得(五)--运算符

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

这个操作符和=操作符执行相同的比较操作,不过<=>可以用来判断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多了&&和||的写法

异或运算符: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))

位运算符

由于比较少用到,这里只做简单介绍,同样位运算符在SQLSERVER里是没有的

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

MYSQL中提供的位运算有

按位或(|)

按位与(&)

按位异或(^)

按位左移(<<)

按位右移(>>)

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

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

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

二进制表示为:10100

特别提示

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

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

输入单引号需要:\'

输入双引号需要:\''

输入反斜杠:\\

输入回车符:\r

输入换行符:\n

输入制表符:\tab

输入退格符:\b

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

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

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

代码如下:

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

SELECT * FROM table_1

总结

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

(0)

相关推荐

  • mySQL UNION运算符的默认规则研究

    复制代码 代码如下: /* 建立数据表 */ create table td_base_data( id int(10) not null auto_increment,userId int(10) default '0',primary key (`id`))ENGINE=MyISAM DEFAULT CHARSET=gbk; create table td_base_data_20090527( id int(10) not null auto_increment,userId int(10

  • Mysql字符串截取函数SUBSTRING的用法说明

    感觉上MySQL的字符串函数截取字符,比用程序截取(如PHP或JAVA)来得强大,所以在这里做一个记录,希望对大家有用. 函数: 1.从左开始截取字符串 left(str, length) 说明:left(被截取字段,截取长度) 例:select left(content,200) as abstract from my_content_t 2.从右开始截取字符串 right(str, length) 说明:right(被截取字段,截取长度) 例:select right(content,200

  • MySQL replace函数替换字符串语句的用法

    MySQL replace函数我们经常用到,下面就为您详细介绍MySQL replace函数的用法,希望对您学习MySQL replace函数方面能有所启迪. 最近在研究CMS,在数据转换的时候需要用到mysql的MySQL replace函数,这里简单介绍一下. 比如你要将表 tb1里面的 f1字段的abc替换为def UPDATE tb1 SET f1=REPLACE(f1, 'abc', 'def'); REPLACE(str,from_str,to_str) 在字符串 str 中所有出现

  • Mysql常用运算符与函数汇总

    我们先把数据表建好 use test; create table `employee`( emp_no int unsigned, emp_name varchar(30), emp_sex varchar(3), emp_age tinyint unsigned, sal double, history datetime ); insert into employee values(1, '张三', '男', 18, 5000, '2012-04-23'), (2, '李四', '男', 27

  • mysql获取字符串长度函数(CHAR_LENGTH)

    length:   是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符.一个多字节字符算作一个单字符.对于一个包含五个二字节字符集, LENGTH()返回值为 10,而CHAR_LENGTH()的返回值为5.CHARACTER_LENGTH(str) CHARACTER_LENGTH()是CHAR_LENGTH()的同义词.BIT_LENGTH(str) 返回2进制长度.例如:可以查出用户名长度少于6个字

  • FROM_UNIXTIME 格式化MYSQL时间戳函数

    函数:FROM_UNIXTIME作用:将MYSQL中以INT(11)存储的时间以"YYYY-MM-DD"格式来显示.语法:FROM_UNIXTIME(unix_timestamp,format) 返回表示 Unix 时间标记的一个字符串,根据format字符串格式化.format可以包含与DATE_FORMAT()函数列出的条目同样的修饰符. 根据format字符串格式化date值.下列修饰符可以被用在format字符串中: %M 月名字(January--December)%W 星期

  • MySQL中的运算符使用实例展示

    我一贯秉承着一点:通过自己的双手真实的操作一遍之后的信息是最可靠的,所以在您参考这个小文儿的时候请不要只是"看",单纯的瞧一瞧是得不到真知滴~~~ 座右铭:纸上得来终觉浅,绝知此事要躬行! 1.算数运算符 加 mysql> select 1+2; 减 mysql> select 2-1; 乘 mysql> select 2*3; 除 mysql> select 5/3; 商 mysql> SELECT 5 DIV 2; 模 mysql> select

  • Mysql 数字类型转换函数

    1.将Int 转为varchar经常用 concat函数,比如concat(8,'0') 得到字符串 '80' 2.将varchar 转为Int 用 cast(a as signed) a为varchar类型的字符串 总结:类型转换和SQL Server一样,就是类型参数有点点不同 : CAST(xxx AS 类型) , CONVERT(xxx,类型) 可用的类型 二进制,同带binary前缀的效果 : BINARY 字符型,可带参数 : CHAR() 日期 : DATE 时间: TIME 日期

  • MySQL Where 条件语句介绍和运算符小结

    WHERE 条件 有时候操作数据库时,只操作一些有条件限制的数据,这时可以在SQL语句中添加WHERE子句来规定数据操作的条件. 语法: 复制代码 代码如下: SELECT column,- FROM tb_name WHERE definition WHERE 关键字后面接有效的表达式(definition),该表达式表示被操作的数据记录必须满足的条件. 除 SELECT 外,WHERE 条件关键字可以用于任何 SQL 语法允许的场合,如 UPDATE(更新).DELETE(删除)等. 例子:

  • MySQL里实现类似SPLIT的分割字符串的函数

    下边的函数,实现了象数组一样去处理字符串. 一,用临时表作为数组 复制代码 代码如下: create function f_split(@c varchar(2000),@split varchar(2)) returns @t table(col varchar(20)) as begin while(charindex(@split,@c)<>0) begin insert @t(col) values (substring(@c,1,charindex(@split,@c)-1)) se

  • MySQL笔记之运算符使用详解

    Mysql可以通过运算符来对表中数据进行运算,比如通过出生日期求年龄等 运算符包括四类,分别是:算数运算符.比较运算符.逻辑运算符和位运算符 算数运算符加.减.乘运算 复制代码 代码如下: mysql> select a,a+5,a*2 from t1;+------+------+------+| a    | a+5  | a*2  |+------+------+------+|   24 |   29 |   48 |+------+------+------+ row in set (

  • mysql计算时间差函数

    MySql计算两个日期的时间差函数TIMESTAMPDIFF用法: 语法: TIMESTAMPDIFF(interval,datetime_expr1,datetime_expr2)   说明: 返回日期或日期时间表达式datetime_expr1 和datetime_expr2the 之间的整数差.其结果的单位由interval 参数给出.interval 的法定值同TIMESTAMPADD()函数说明中所列出的相同.  复制代码 代码如下: SELECT TIMESTAMPDIFF(MONT

随机推荐