SQL --运算符

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

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

mysql中的 =、<>或!=运算符,相信大家已经很清楚了。今天看到了<=>这个运算符,记录下来。

1><=>和=号的相同点

他们都是两个值比较符,相等时为1,不相等时为0;举例子:'A'<=>'B'得到的值是0,'c'<=>'c'得到的值是1。

2>和=号的不同点

null值在=号中是没有任何意义的。因此,=号运算符不能将null作为有效结果;当与null进行比较时,请用<null>。

举例子:

'A' <=> null 得到的结果为0,因为'A'和null明显是不相等的。

null <=> null 得到的结果为1。

但是,用 = 符号时,却得出如下结果

'A' = null 得到的结果是 null,因为null不能参与=的运算,只要是参与了,结果都是null

null = null 得到的结果也是null,理由如上,null不能参与=的运算。

实际例子

首先,查找全部的数据

094148_eswr_2312022.jpg

很明显发现email这个字段只有一个有值,其余都为null。

接着,查出email为null的数据,用<=>查出的结果如下

094427_8wBi_2312022.jpg

查出的结果中,user_id最小值为100000038,说明,上一次查询全部的时候,我只截取了一部分图,对比上图可以发现,只有当email值设为null时,才能被email <=> null查出来,user_id为xx01、xx02……xx31等没有被查询出来。

最后,我们来看下使用 =符查询的结果

094812_iGrU_2312022.jpg

查出来的结果全部为null。我们的本意是查询email为null的数据,用<=>null可以查询出来,用=null什么都查询不出来。

备注

1. =的结果

SELECT * FROM t_user WHERE t_user.EMAIL = NULL

如上sql语句相当于如下sql语句,查询出来的结果都是一样的

SELECT * FROM t_user WHERE NULL

2.<=>与is

SELECT * FROM t_user WHERE t_user.EMAIL <=> NULL

如上sql语句相当于如下sql语句,查询出来的结果都是一样的

SELECT * FROM t_user WHERE t_user.EMAIL IS NULL

二、least运算符与greatest运算符

语法格式为:least(值1,值2,值3,……值n),其结果为值中最小的那个。如果任一值为null,则整体结果为null。

直接上例子,不解释,大家都懂的。

100810_xSK8_2312022.jpg

100810_hHkU_2312022.jpg

三、regexp运算符

该运算符用来匹配字符串,语法格式如下

select 源字符串 regexp 匹配条件,如果源字符串满足匹配条件,则返回1,;否则返回0。

注意:若 源字符串 或匹配条件 任意一个为null,则结果为null。

常用的通配符如下:

(1) '^' 匹配以该标识符后面字符开头的字符串,例如:'^s',表示匹配以s字符开头的字符串。

(2) '$' 匹配以该标识符前面字符结尾的字符串,例如:'y$',表示匹配以y字符结尾的字符串。

(3) '[...]' 匹配在方括号内的任意字符。例如:'[abc]'表示匹配a或b或c。字符的范围可以使用一个'-','[a-z]'匹配任何字母,'[0-9]'匹配任何数字。

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

(5) '*' 匹配0个或多个字符,注意:只能这样组合'X*',不能'*X'。

(6) '.*' 匹配任何数量任何字符

注意:这个点涉及到正则表达式,关于正则表达式,可以看我的另一篇关于正则表达式的文章。

举例子

(1) '^' 匹配以该标识符后面字符开头的字符串105543_Z8Mt_2312022.jpg

如上例子源字符串是'xi',根据匹配的条件不同,得出不同的结果。

1.匹配以'h'开头的字符串,很明显'xi'不是以'h'开头,则返回0

2.匹配以'x'开头的字符串,返回1

3.匹配以'xi'开头的字符串,返回1

4.匹配以'xig'开头的字符串,很明显'xi'只有两位,不满足'xig'开头,返回0。

(2) '$' 匹配以该标识符前面字符结尾的字符串,例如:'y$',表示匹配以y字符结尾的字符串。

110409_euq3_2312022.jpg

这个例子不解释,大伙都应该看得懂。

(3) '[...]' 匹配在方括号内的任意字符。

111040_FMUb_2312022.jpg

如上例子源字符串是'abcdefg',

1>匹配字符串'[abc]',只要源字符串中有a或b或c字符串,则都返回1。

2>匹配字符串为'[jkm]',由于源字符串中没有j或k或m,所以返回0。

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

111949_LGNm_2312022.jpg

如上例子,源字符串'zhangsan'

1>匹配字符串总共三位,要以'zh'结尾,很明显'zhangsan'不满足条件,则返回0.

2>匹配字符串总共三位,要以'gs'结尾,返回1

3>匹配字符串总共三位,要以'sn'结尾,由于源字符串根本就没有'Xsn'组合的字符串,所以没有匹配上,返回0。

(5) '*' 匹配0个或多个字符

113435_y1c7_2312022.jpg

如上例子中,源字符串是'lixianli'

1>匹配字符串为'lixian',很明显匹配得上

2>匹配字符串为'lian',源字符串中都没有这个字符,因此返回0

3>匹配字符串为'nli',刚好处于源字符串结尾,满足匹配0的条件,所以返回1。

(6) '.*' 匹配任何数量任何字符

这个就不用举例子了,随便匹配都可以。

四、逻辑运算符

AND或者&&、OR或者||、

异或运算符:XOR

位运算符

|  按位或

& 按位与

^ 按位异或

<< 按位左移

>> 按位右移

~ 按位取反

小贴士:可以使用BIN()函数查看一个十进制的二进制

114802_YIT8_2312022.jpg


自此,位运算介绍结束。


转载于:https://my.oschina.net/u/2312022/blog/526858

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/543981.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux 文件浏览器_浏览Linux文件系统

linux 文件浏览器你为什么要学习&#xff1f; (Why would you want to learn?) Linux is probably the most used operating system when it comes to development. For a developer, Linux provides all the required tools. Learning how to navigate the Linux file system…

@Autowired 和 @Resource 的 5 点区别!

作者 | 磊哥来源 | Java面试真题解析&#xff08;ID&#xff1a;aimianshi666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;Autowired 和 Resource 都是 Spring/Spring Boot 项目中&#xff0c;用来进行依赖注入的注解。它们都提供了将依赖对…

rsync同步数据到内网

最近公司要求将IDC的APP日志备份到公司办公网内部&#xff0c;思前想后&#xff0c;结合以前学过的知识&#xff0c;决定用rsync直接推送&#xff0c;即从APP服务器上直接将日志推送到公司内网。这样避免了在生产服务器上额外安装更多软件而且只需要进行简单的配置&#xff0c;…

SpringBoot 时间格式化的 5 种实现方法!

作者 | 王磊来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;在我们日常工作中&#xff0c;时间格式化是一件经常遇到的事儿&#xff0c;所以本文我们就来盘点一下 Spring Boot 中时间格…

SpringBoot 解决跨域问题的 5 种方案!

作者 | 磊哥来源 | Java面试真题解析&#xff08;ID&#xff1a;aimianshi666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;跨域问题指的是不同站点之间&#xff0c;使用 ajax 无法相互调用的问题。跨域问题本质是浏览器的一种保护机制&#…

Java 中的 Lombok 到底能不能用?

一、摘要Java&#xff0c;作为一款非常热门的编程语言&#xff0c;尽管它有着非常丰富的语言特性&#xff0c;完全面向对象编程&#xff0c;编程高度规范化&#xff0c;但是也有一个最受大家诟病的一个缺点&#xff1a;啰嗦&#xff0c;尤其是当你开发了很多年之后&#xff0c;…

旅行商问题

旅行商问题 (Travelling Salesman problem) This problem can be stated as- "Given n number of cities and a travelling salesman has to visit each city. Then we have to find the shortest tour so that the travelling salesman can visit each and every city on…

分页 + 模糊查询竟然有坑?

不知道你有没有使用过Mysql的like语句&#xff0c;进行模糊查询&#xff1f;不知道你有没有将查询结果&#xff0c;进行分页处理&#xff1f;模糊查询&#xff0c;加上分页处理&#xff0c;会有意想不到的坑&#xff0c;不信我们继续往下看。我之前提供过一个品牌查询接口&…

导致事务@Transactional失效的5种场景!

作者 | 磊哥来源 | Java面试真题解析&#xff08;ID&#xff1a;aimianshi666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;一个程序中不可能没有事务&#xff0c;而 Spring 中&#xff0c;事务的实现方式分为两种&#xff1a;编程式事务和声…

操作系统 cpu调度_CPU调度| 操作系统

操作系统 cpu调度调度标准 (Scheduling Criteria) There are many criteria which have been suggested for comparing the CPU scheduling algorithms. The characteristics which are used for comparison and then used to determine the best algorithms, for this some of…

IOS中KVO模式的解析与应用

最近老翁在项目中多处用到了KVO&#xff0c;深感这种模式的好处。现总结如下&#xff1a; 一、概述 KVO,即&#xff1a;Key-Value Observing&#xff0c;它提供一种机制&#xff0c;当指定的对象的属性被修改后&#xff0c;则对象就会接受到通知。简单的说就是每次指定的被观察…

使用 lambda 实现超强的排序功能

我们在系统开发过程中&#xff0c;对数据排序是很常见的场景。一般来说&#xff0c;我们可以采用两种方式&#xff1a;借助存储系统&#xff08;SQL、NoSQL、NewSQL 都支持&#xff09;的排序功能&#xff0c;查询的结果即是排好序的结果查询结果为无序数据&#xff0c;在内存中…

java 的23种设计模式 之单身狗和隔壁老王的故事

2019独角兽企业重金招聘Python工程师标准>>> 觉得代码写的别扭了&#xff0c;回头翻翻java 的23种设计模式。today,额,这么晚了&#xff0c;困了。就弄个最简单的单例模式吧。单例模式&#xff1a;俗称单身狗 package singleton; public class SingleTon { private …

使用python学线性代数_二项式过程| 使用Python的线性代数

使用python学线性代数When we flip a coin, there are two possible outcomes as head or tail. Each outcome has a fixed probability of occurrence. In the case of fair coins, heads and tails each have the same probability of 1/2. In addition, there are cases in …

工作中常见的 6 种设计模式,你用过几种?

前言 哈喽&#xff0c;大家好。平时我们写代码呢&#xff0c;多数情况都是流水线式写代码&#xff0c;基本就可以实现业务逻辑了。如何在写代码中找到乐趣呢&#xff0c;我觉得&#xff0c;最好的方式就是&#xff1a;使用设计模式优化自己的业务代码。今天跟大家聊聊日常工作中…

这12款idea插件,能让你代码飞起来!

前言基本上每个程序员都会写代码&#xff0c;但写代码的速度不尽相同。为什么有些人&#xff0c;一天只能写几百行代码&#xff1f;而有些人&#xff0c;一天可以写几千行代码&#xff1f;有没有办法&#xff0c;可以提升开发效率&#xff0c;在相同的时间内&#xff0c;写出更…

node js 开发网站_使用Node JS开发网站

node js 开发网站You will have your own fully functional website running on "localhost" after going through this article. 阅读完本文后&#xff0c;您将在“ localhost”上运行自己的功能齐全的网站 。 Basic knowledge of JavaScript and HTML is a prereq…

Java:LocalDate / LocalDateTime加减时间

在线API参考&#xff1a;LocalTime (Java Platform SE 8 ) 方法介绍 方法1方法1说明plusYears(long years) minusYears(long years) 返回增加/减少了年数的副本plusMonths(long months) minusMonths(long months)返回增加/减少了月数的副本plusWeeks(long weeks) minusWeeks(…

集合 List 分片的 5 种实现

作者 | 磊哥来源 | Java中文社群&#xff08;ID&#xff1a;javacn666&#xff09;转载请联系授权&#xff08;微信ID&#xff1a;GG_Stone&#xff09;前些天在实现 MyBatis 批量插入时遇到了一个问题&#xff0c;当批量插入的数据量比较大时&#xff0c;会导致程序执行报错&a…