mysql-运算符(七)

本文详细介绍了SQL中的算术运算符如除法和求余,比较运算符包括等于、不等于、范围和模式匹配,逻辑运算符如AND、OR、NOT和XOR,以及位运算符如位与、或、异或、左移和右移。还涵盖了运算符的优先级和注意事项,如除数为0的处理和NULL值的比较。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

运算符

算术运算符

注意:

  • /(DIV):执行除法运算,用一个值除以另一个值得到商。
  • %(MOD):执行求余运算,用一个值除以另一个值得到余数。
  • 例1:
select 4+2,4-2,4*2,4/2,4%3;

在除法运算和求余运算中,如果除数为0将是非法运算,返回结果为NULL

  • 例2:
select 6/0,9%0;

运算符不仅可以直接操作数值,还可以操作表中的字段。

  • 例3:
select name 商品名, price 售价, price*num 总额 from good;

比较运算符

比较运算符的作用是将表达式中的两个操作数进行比较,比较结果为真,则返回1,为假则返回0,结果不确定则返回NULL。

注意:

  • =(<=>):等于
  • <>(!=):不等于
  • between and:判断一个值是否在两个值之间
  • in:判断一个值是否在某个集合中
  • is null:判断一个值是否为null
  • like:通配符匹配,判断一个值是否包含某个字符
  • regexp:正则表达式匹配

常用比较运算符

  1. 等于运算符
    例:
select 0=1,1=1,0.1=1,1='1','a'='a',(1+2)=(2+1),null=null,null<=>null;

如果两个操作数中有一个或两个值为NULL(空值),结果为空;
如果两个操作数分别为字符串和数值,系统会首先将字符串转换成数值,然后再进行比较。

  1. 不等于运算符
    “<>”和“!=”用于判断数字、字符串和表达式是否不相等,
    如果不相等则返回1,否则返回0。其用法与等于运算符用法相同,但不能操作NULL(空值)。
    例:
select 1<>2, 2!=1,1.5<>1,'abc'<>'ab',(1+2)!=(1+1);
  1. 其他常用比较运算符
    “<”“>”“<=”和“>=”4种运算符用于比较数字、字符串和表达式,
    如果比较结果为真则返回1,否则返回0。这些运算符也不能操作NULL(空值)。
    例:
select 1<1,2>=1,1.5<2,'a'<'aaa',(1+2)<=(1+2);

注意:
如果使用上述4种运算符进行比较的两个操作数为字符串,
系统会比较两个字符串的长度,但两个操作数不能一个为数值,一个为字符串。

实现特殊功能的比较运算符

实现特殊功能的比较运算符主要包括“BETWEEN AND”“IN”“IS NULL”“LIKE”和“REGEXP”

  • regexp 通配符及其作用
regexp通配符作用例子
^匹配字符串的开始部分。例如,^b匹配以字母b开始的字符串。
$匹配字符串的结束部分。例如,st$匹配以st结束的字符串。
.匹配除换行符‘\n’之外的任何单个字符。例如,b.t匹配bit,bat,but等。
[…]匹配方括号中(字符集合)所包含的任意一个字符。例如,[a-z]匹配字母表26个字母中的任意一个字母。
[^…]匹配字符集合未包含的任意一个字符。例如,‘[^a]’可以匹配除‘a’之外的任意一个字符。
p1|p2:匹配p1或p2。例如,‘k|cat’能匹配‘k’或‘cat’。‘(k|c)at’可以匹配‘kat’或‘cat’。
*匹配符号*前面的零个或多个字符。例如,‘ao*’能匹配‘a’以及‘aoo’,[0-9]*匹配任意数量的数字。
+匹配符号+前面的字符一次或多次。例如,‘ao+’能匹配‘ao’以及‘aoo’。
{n}匹配符号前面的字符至少n次。例如,‘o{2}’能匹配‘food’,但不能匹配‘dog’。
{n,m}匹配符号前面的字符至少n次,至多m次。例如,b{2,4}匹配包含至少2个,至多4个b的字符串。
  • 例1:
select 'abc' regexp '^a','abc' regexp 'c$', 'abc' regexp '.bc','abc' regexp '[xy]';
  • 例2:
select 'bcd' regexp 'a*d', 'bcd' regexp 'cc*d','bcd' regexp 'c+d', 'bcd' regexp 'b+d';

逻辑运算符

逻辑运算符又称为布尔运算符,用于确定表达式的真和假。

  • 逻辑运算符:
    • &&(AND):逻辑与(有0皆0;非零操作数,null——为null)
      例:
      select 1&&1, 1 and 0,1 and null,0 and null;
      
    • ||(OR):逻辑或(㈠一真或为真 ㈡全假或为假 ㈢0,null|null,null ——null)
      例:
      select 1||1,0 or 0,1 or null,0 or null,null or null;
      
    • !(NOT):逻辑非(㈠非null返否值 ㈡null就返回null)
      例:
      select !0,not 1,not null;
      
    • XOR:逻辑异或(①非null,同则0;异则1 ②有null就是null)
      例:
      select 1 xor 1,0 xor 0, 1 xor 0,1 xor null,0 xor null, null xor null;
      

位运算符

原理:操作数——> 二进制数——> (每位)进行指定的逻辑运算——> 转十进制数

  1. &: 位与(二进制时:①全1才1 ②有0皆为0)
例:
select 5&6,2&3&6;
解析:
0101		0010
0110		0011
————		0110
0100		————
			0010
  1. |: 位或(①有1皆为1 ②全0才为0)
例:
select 5|6,2|3|6;
0101		0010
0110		0011
————		0110
0111		————
			0111
  1. ^: 位异或(①异为1 ②同则0)
例:
select 10^15,2^2;
1010		0010
1111		0010
————		————
0101		0000
  1. <<: 位左移(左移右补0)
例:
select 1<<2,5<<1;
0001		0101		
<—2位		<—1位		
0100		1010		
  1. >>: 位右移(右移左补0)
例:
select 2>>1,5>>1;
0010		0101
1位—>		1位—>
0001		0010
  1. ~: 位取反(1取反后变0, 0取反后变1)
例:
select ~1, bin(~1);

bin(n)函数返回n的二进制值的字符串表示,其中n是一个长整型(bigint)数。

运算符的优先级

优先级运算符
最高!
2-(负号),~(按位取反)
3^(按位异或)
4*,/(DIV),%(MOD)
5+,-
6>>,<<
7&
8|
9=(比较运算),<=>,<,<=,>,>=,!=,<>,IN,IS NULL,LIKE,REGEXP
10BETWEEN AND,CASE,WHEN,THEN,ELSE
11NOT
12&&,AND
13XOR
14||,OR
最低=(赋值运算),:=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值