mysql 判断字符串相等_「8」掌握MySQL比较运算符是很有必要的

4f3aa5f7b444d76b9903ed1cf275d88e.png

本文要的主题就是MySQL比较运算符,也就是通过各类案例来看看其运行得到的结果是什么,以及掌握其规则。

首先,我们看看比较运算符有哪些种类。

2dfb927e86783b8a4561a708bbe33163.png

接下来我们就通过案例的案例的方式来逐一学习。

【1】等于运算符:=

“=”是用来判断数字、字符串和表达式是否相等,如果相等,返回值为,否则返回值为0。

select 5=6,'9'=9,668=668,'luo'='luo',(2*3)=(4*5),NULL=NULL,0=NULL;
45153e1db346ad75e69f5f35574a6609.png

【结论】

  • 若有一个两个操作数为NULL,比较运算的结果就是NULL;
  • 若同一个比较运算符中两个操作数都是字符串,则按照字符串进行比较;
  • 若同一个比较运算符中两个操作数都是数值,则按照数值进行比较;
  • 若是一个数值和一个字符串进行比较,则MySQL自动将字符串转化为数值;
  • 不管何种情况,“=”比较返回的确实只有1、0与NULL三类值。

【2】安全等于运算符:<=>

“<=>”运算符在具备“=”所有功能的基础上增加了判断NULL值的功能。

select 5<=>6,'9'<=>9,668<=>668,'luo'<=>'luo',(2*3)<=>(4*5),NULL<=>NULL,0<=>NULL;
6190ef7c257c5f4c885afdb6c3d82d4a.png

【结论】

  • “<=>”运算符确实具备“=”所有功能,返回值也是1、0与NULL;
  • 当两个操作数均为NULL时,“<=>”运算符返回的结果为1,而不是NULL;
  • 当只有一个操作数为NULL时,“<=>”运算符返回的结果也不是NULL而是0。

【3】不等于运算符:<>或!=

select 5<>6,'9'<>9,668<>668,'luo'<>'luo',(2*3)<>(4*5),NULL<>NULL,0<>NULL;select 5!=6,'9'!=9,668!=668,'luo'!='luo',(2*3)!=(4*5),NULL!=NULL,0!=NULL;
29a0b8c383b9ba9519dc3f01d90416fd.png

【结论】

  • “<>”或“!=”运算符也是可以用于数字、字符串与表达式的判断;
  • 其比较逻辑与“=”相反,但返回值也是1、0与NULL;

【4】小于或等于运算符:<=

select 5<=6,'9'<=9,668<=668,'luo'<='luo',(2*3)<=(4*5),NULL<=NULL,0<=NULL;
18cb80b78287e3e4e6ecd865917f17f7.png

【结论】

  • “<=”运算符也是可以用于数字、字符串与表达式的判断;
  • 其逻辑:判断左边的操作数是否小于右边的操作数,如果是则返回1,否则返回0;
  • 针对含有NULL的操作数则好不犹豫地返回NULL。

【5】小于运算符:<

【6】大于或等于运算符:>=

【7】大于运算符:>

这三类运算符与上面的“<=”逻辑一致,大家可以自己去分析其过程并得到结论。

【6】大于或等于运算符:>=select 5<6,'9'<9,668<668,'luo'
f6480d680bede684ed4c393ceff2a733.png

【8】IS NULL(ISNULL)、IS NOT NULL运算符

select NULL IS NULL,ISNULL(NULL),ISNULL(2019),2019 IS NULL;
181b59ed872b74201c4baec62e327a5f.png

【结论】

  • 这类比较运算符是用来判断数字、字符、表达式结果是否为NULL;
  • 返回的结果值有1、0,没有NULL;
  • IS NULL(ISNULL)与IS NOT NULL返回的值相反。

【9】BETWEEN AND运算符

其语法格式为“expr BETWEEN min AND max”。

SELECT 19 BETWEEN 0 AND 20,19 BETWEEN 0 AND 15,19 BETWEEN 0 AND 19,19 BETWEEN 19 AND 20;SELECT 'a' BETWEEN 'a' AND 'z',(2*3) BETWEEN 0 AND 10,NULL BETWEEN 0 AND 10;
bac627faaae8229252ae11477000573d.png

【结论】

  • 这类比较运算符是用来判断数字、字符、表达式结果是否为NULL;
  • 返回的结果值有1、0与NULL;
  • 等同于:min <= expr <=max,即包含上下限的值。

【10】IN与NOT IN运算符

SELECT 2019 IN('2019',2019,'A'),'A' IN('2019',2019,'A'),2018 IN('2019',2019,'A');SELECT 2019 NOT IN('2019',2019,'A'),'A' NOT IN('2019',2019,'A'),2018 NOT IN('2019',2019,'A');
16336ab203e1d47fa3c5a21c58a8b4f4.png

【结论】

  • 这类比较运算符是用来判断数字、字符、表达式结果是否为NULL;
  • 返回的结果值有1、0与NULL;
  • IN用来判断操作数是否为IN列表中的一个值,如果是则返回1,否则返回0,对于NULL则返回NULL。NOT IN则于IN相反。

【11】LIKE运算符

其语法格式为“expr LIKE 匹配条件”。

SELECT 'luo' LIKE 'luo','luo' LIKE 'luo_','luo' LIKE '%l','luo' LIKE 'l__','luo' LIKE NULL;SELECT 3 LIKE '345',3 LIKE 345;
d42e42b70bd41e67bcfe903c0e02030f.png

【结论】

  • LIKE运算符用于匹配字符串;
  • 返回的结果值有1、0与NULL;
  • 包含两种通配符。“%”匹配任何字符,甚至包括零字符;“_”只能匹配一个字符。

【12】REGEXP运算符

REGEXP是LIKE的逆运算。语法格式类似:“expr REGEXP 匹配条件”。只是其包含的通配符更多。

  1. ^:匹配以该字符后面的字符开头的字符串;
  2. $:匹配以该字符后面的字符结尾的字符串;
  3. .:匹配任何一个单字符;
  4. [···]:匹配方括号内的任何字符;
  5. *:匹配零个或多个在它前面的字符。
SELECT 'luo' REGEXP '^l', 'luo' REGEXP 'o$', 'luo' REGEXP '.l', 'luo' REGEXP '[abc]';SELECT 'luo' REGEXP '[a-z]*','luo' REGEXP '[0-9]*','luo' REGEXP '.*';
580fee0a5d8f9e82d87845cfa7a1c666.png

【结论】

REGEXP运算符用于匹配字符串;返回的结果值有1、0与NULL;根据匹配条件判断返回结果。

总结

  • MySQL支持的比较运算符有12类;
  • 一个比较运算符的结果总是1、0或NULL;
  • 只有“<=>”才支持NULL的比较,其他对有NULL操作数时返回的结果就是NULL;
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值