讲解MySQL中<=>操作符的用法
问题 :
我在看以前的一个开发者的代码时看到
WHERE p.name <=> NULL
在这个查询语句中 <=>符号是什么意思啊?是不是和 =号是一样啊?还是一个语法错误啊?但是没有显示任何错误或者异常。我已经知道了mysql中的 <> = !=等符号。
最佳回答 :
和=号的相同点
像常规的=运算符一样,两个值进行比较,结果是0(不等于)或1(相等);换句话说:'A'<=>'B'得0和'a'<=>'a‘得1。
2.和=号的不同点
和=运算符不同的是,NULL的值是没有任何意义的。所以=号运算符不能把NULL作为有效的结果。所以:请使用<=>,
'a' <=> NULL 得0 NULL<=> NULL 得出 1。和=运算符正相反,=号运算符规则是 'a'=NULL 结果是NULL 甚至NULL = NULL 结果也是NULL。顺便说一句,mysql上几乎所有的操作符和函数都是这样工作的,因为和NULL比较基本上都没有意义。
用处
当两个操作数中可能含有NULL时,你需要一个一致的语句。
... WHERE col_a <=> ? ...
这里的占位符有可能是常量也有可能是NULL,当使用<=>运算符时,你没有必要对查询语句做任何修改。
相关操作符
除了 <=> ,还有两个其他的操作符用来处理某个值和NULL做比较,也就是IS NULL and IS NOT NULL。他们是ANSI标准中的一部分,因此也可以用在其他数据库中。而<=>只能在mysql中使用。
你可以把<=>当作mysql中的方言。
'a' IS NULL ==> 'a' <=> NULL 'a' IS NOT NULL ==> NOT('a' <=> NULL)
据此,你可以把这个查询语句段改的更具移植性一点:
WHERE p.name IS NULL
相关推荐
-
+= 和 ++ 操作符区别简单介绍
我们知道: int i = 5; long j = 7; i = i + j不能编译,但i += j却能编译运行,结果i = 12. 这是因为: i += j 等同于 i = (int)(i+j); 总结就是:对复合赋值表达式来说,E1 op= E2 (诸如 i += j; i -= j 等等),其实是等同于 E1 = (T)((E1) op (E2)),其中,T是E1这个元素的类型. 这个问题,其实官方文档中已经解答了. 官方文档地址 §15.26.2 Compound Assignment
-
PHP中=赋值操作符对不同数据类型的不同行为
首先解释赋值操作符=的行为,看下面的例子: 复制代码 代码如下: $i = 0; $j = $i; $j = 0; echo $j; // 打印输出0 $arr = array(0); $arr2 = $arr; $arr2[0] = 1; echo $arr[0]; //打印输出0 class B { public $i = 0; } $b = new B(); $c = $b; $c->i = 1; echo($b->i); // 打印输出1 从这个例子可以看出,如果=操作符右边的变量为基
-
JavaScript中的操作符==与===介绍
JavaScript中,==与===操作符均可用于判断两个值是否相等:不同之处在于,如果进行判断的两个值类型不一致,===操作符会直接返回false,而==操作符则会在类型转换后再进行判断.详细的判断规则如下: ===操作符的判断规则 1.如果两个值的类型不一致,返回false. 2.如果两个值的类型一致,值一致,返回true.NaN是一个特例,NaN===NaN返回false. 3.如果两个值均为object类型,那么与Java一样,除非两者引用一致(reference指向同一个对象地址),不
-
perl高级排序,<=>操作符,飞船操作符
按照要求进行的排序: 复制代码 代码如下: #!/bin/perl @number=qw/5 10 15 3 2 4 8 6 /; my @descending =sort {$a<=>$b} @number;#这里$a=5,$b=10,因为$a在前,perl得到的结果是小数在前,也就是升序排列 print "@descending\n"; 结果如下:F:\>perl\a.pl 2 3 4 5 6 8 10 15 F:\> 如果要降序排列,只要把程序的第二
-
JS中==与===操作符的比较
===操作符: 要是两个值类型不同,返回false 要是两个值都是number类型,并且数值相同,返回true 要是两个值都是stirng,并且两个值的String内容相同,返回true 要是两个值都是true或者都是false,返回true 要是两个值都是指向相同的Object,Arraya或者function,返回true 要是两个值都是null或者都是undefined,返回true ==操作符: 如果两个值具有相同类型,会进行===比较,返回===的比较值 如果两个值不具有相同类型,也有
-
JavaScript中的比较操作符>、<、>=、<=介绍
与==操作符一样,比较操作符(>.<.>=.<=)可以将对象转换成string或者number后再进行比较 -- 对于number,比较值的大小:对于string,则比较字符在编码表中出现的次序.与==操作符不一样的是,==会将Date对象优先转换成string后再加以比较,而比较操作符则会对包括Date在内的所有对象优先转换成number后再加以比较.其比较判断的规则如下: 1.操作符两边如果有对象,将其转换成number:如果无法转换成number,则将其转换成string.
-
讲解MySQL中<=>操作符的用法
问题 : 我在看以前的一个开发者的代码时看到 WHERE p.name <=> NULL 在这个查询语句中 <=>符号是什么意思啊?是不是和 =号是一样啊?还是一个语法错误啊?但是没有显示任何错误或者异常.我已经知道了mysql中的 <> = !=等符号. 最佳回答 : 和=号的相同点 像常规的=运算符一样,两个值进行比较,结果是0(不等于)或1(相等);换句话说:'A'<=>'B'得0和'a'<=>'a'得1. 2.和=号的不同点 和
-
MySQL中or语句用法示例
1.mysql中or语法的使用,在mysql语法中or使用注意点. 项目遇到坑,遍历发放奖励数据查询错误!!! $sql = 'SELECT * FROM `vvt_spread_doubleegg_exchange_award` AS p WHERE p.`act_type` = 4 or p.`act_type` = 5 AND p.`user_id` = ' .$user_id ; sql中的or语法一般用于多个条件的查询,上面的语法查询的相当于:两个sql查询出来的数据集合. $sql
-
Python中操作符重载用法分析
本文实例讲述了Python中操作符重载用法.分享给大家供大家参考,具体如下: 类可以重载python的操作符 操作符重载使我们的对象与内置的一样.__X__的名字的方法是特殊的挂钩(hook),python通过这种特殊的命名来拦截操作符,以实现重载. python在计算操作符时会自动调用这样的方法,例如: 如果对象继承了__add__方法,当它出现在+表达式中时会调用这个方法.通过重载,用户定义的对象就像内置的一样. 在类中重载操作符 1.操作符重载使得类能拦截标准的python操作. 2.类可
-
mysql中的limit用法有哪些(推荐)
SELECT * FROM 表名 limit m,n; SELECT * FROM table LIMIT [offset,] rows; 1.m代表从m+1条记录行开始检索,n代表取出n条数据.(m可设为0) 如:SELECT * FROM 表名 limit 6,5; 表示:从第7条记录行开始算,取出5条数据 2.值得注意的是,n可以被设置为-1,当n为-1时,表示从m+1行开始检索,直到取出最后一条数据. 如:SELECT * FROM 表名 limit 6,-1; 表示:取出第6条记录行以
-
深入分析Mysql中limit的用法
Mysql中limit的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们提供了这样一个功能. SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数.LIMIT 接受一个或两个数字参数.参数必须是一个整数常量.如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行
-
MYSQL中Truncate的用法详解
本文导读:删除表中的数据的方法有delete,truncate, 其中TRUNCATE TABLE用于删除表中的所有行,而不记录单个行删除操作.TRUNCATE TABLE 与没有 WHERE 子句的 DELETE 语句类似:但是,TRUNCATE TABLE 速度更快,使用的系统资源和事务日志资源更少.下面介绍SQL中Truncate的用法 当你不再需要该表时, 用 drop:当你仍要保留该表,但要删除所有记录时, 用 truncate:当你要删除部分记录时(always with a WHE
-
图文详解mysql中with...as用法
最近无意中接触到了一篇文章,里面写了一个SQL的用法,是with...as,中午抽空记录一下 用MySQL试了一下,发现并不支持该语法(版本:5.7) 于是换作以下(版本:8.0)不会报错: 总结一下with的用法,类似生成一个临时的表,和如下红框里的操作并无异样 感觉是个鸡肋语法...翻遍了mysql文档也没找到该语法到底是哪个版本开始支持的 更新大佬的原理链接---> MariaDB表表达式(2):CTE - 骏马金龙 总结 到此这篇关于mysql中with...as用法的文章就介绍到这了,
-
MySql中JOIN的用法示例详解
目录 笛卡尔积:CROSS JOIN 内连接:INNER JOIN 左连接:LEFT JOIN 右连接:RIGHT JOIN 外连接:OUTER JOIN USING子句 自然连接:NATURE JOIN 上次面试被问到JOIN,自己都已经忘了课堂上讲的笛卡尔积那些就是JOIN,最近重新复习了一遍 JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接. 先创建两个表,下面用于示例 CREATE TABLE t_blog( id INT PRIM
-
MySQL中Replace语句用法实例详解
目录 前言 一.replace into函数 二.replace into .insert ignore 和 insert into的区别 三.replace函数 总结 前言 replace into平时在开发中很少用到,这次是因为在做一个生成分布式ID的开源项目,调研雅虎推出的一个基于数据库生成唯一id生成方案:flickr 碰到的一个知识盲点,仅以此篇记录一下. 一.replace into函数 表结构 CREATE TABLE `id_generator` ( `id` bigint(20
-
实例讲解JS中setTimeout()的用法
本文实例讲解了JS中setTimeout()的用法,分享给大家供大家参考,具体内容如下 效果图: 具体代码: <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>无标题文档</title> <script type="text/javascript"&
随机推荐
- JavaScript使用prototype定义对象类型
- javascript秒数倒计时自动跳转代码
- RCMD使用说明
- 服务器安全设置_初级篇
- oracle中文乱码解决的办法
- Visual Studio 2017安装心得总结
- C++开发:为什么多线程读写shared_ptr要加锁的详细介绍
- Javascript/Jquery——简单定时器的多种实现方法
- php bootstrap实现简单登录
- 几种tab切换详解
- 讲解Nginx服务器中设置本地浏览器缓存的简单方法
- bootstrap data与jquery .data
- javascript实现切换td中的值
- javascript随机抽取0-100之间不重复的10个数
- Javascript之this关键字深入解析
- c#实现汉诺塔问题示例
- 以图换字的几个方法及思路
- Android多媒体应用使用SoundPool播放音频
- python pycurl验证basic和digest认证的方法
- thinkjs微信中控之微信鉴权登陆的实现代码