Mysql各种运算符(算术运算、比较运算、逻辑运算、位运算)

1. 算术运算符

加法运算符
mysql的+只表示数值相加,如果是非数值类型,会尝试转换成数值,转换失败就是0

除法运算符

  • 一个数除以整数后,不管是否能除尽,结果都为一个4位小数的浮点数
  • 一个数除以0为NULL。Null是占用空间的

2. 比较运算符

比较的结果为真则返回1,比较的结果为假则返回0,其他情况则返回NULL

  • =:等于运算符。如果等号两边的值都是字符串,则按字符串中的字符ANSI码进行比较。如果等号两边的值一个是整数,另一个是字符串,则会将字符串转化为数字进行比较。如果等号两边的值、字符串、表达式中有一个为NULL,则比较结果为NULL。SQL中赋值符号使用:=,例如update table set name := 'name1' where id = 1;
  • <=>:安全等于运算符。和等于运算符类似,区别在于两个操作数均为NULL时,其返回值为1,而不为NULL;当一个操作数为NULL时,其返回值为0,而不为NULL
  • <>和!=:不等于运算符。不等于运算符不能判断NULL值。如果两边的值有任意一个为NULL,或两边都为NULL,则结果为NULL
  • least:最小值运算符,在多个值中返回最小值。例如select least(a, b, c);。当参数是整数或浮点数时,least将返回其中最小的值;当参数为字符串时,返回字母表中顺序最靠前的字符;当比较值列表中有NULL时,不能判断大小,返回值为NULL
  • greatest:最大值运算符,在多个值中返回最大值。例如select greatest(a, b, c);
  • in:属于运算符。如果给定的值为NULL,则结果为NULL
  • like:模糊匹配运算符。通配符_只能匹配一个字符。如果给定的值或者匹配条件为NULL,则返回结果为NULL
  • regexp:正则表达式运算符,判断一个值是否符合正则表达式的规则。例如select 'abc' regexp '^a';,返回的结果为1。若expr或匹配条件任意一个为NULL,则结果为NULL
  • rlike:正则表达式运算符,判断一个值是否符合正则表达式的规则。例如select a from table where b rlike c;

3. 逻辑运算符

逻辑运算符的返回结果为1、0或者NULL

  • not:逻辑非运算符。当给定的值为0时返回1;当给定的值为非0值时返回0;当给定的值为NULL时,返回NULL。例如select not (1 + 1);返回的结果为0
  • and:逻辑与运算符。当给定的所有值均为非0值,并且都不为NULL时,返回
    1;当给定的一个值或者多个值为0时则返回0;否则返回NULL
  • or:逻辑或运算符。当给定的值有一个非0值时,则返回1;当两个值都是0值时,返回0;当一个值为0另一个值为NULL或者两个值都为NULL,则返回NULL
  • xor:逻辑异或。当给定的值中任意一个值为NULL时,则返回NULL;如果
    两个非NULL的值都是0或者都不等于0时,则返回0;如果一个值为0,另一个值不为0时,则返回1。例如select a xor b;

4. 位运算符

位运算符会先将操作数变成二进制数,然后进行位运算,最后将计算结果从二进制变回十进制数

  • &:按位与运算符。将给定值对应的二进制数逐位进行逻辑与运算,当数值都为1时,则该位返回1,否则返回0。例如select 1 and 10;,1的二进制位0001,10的二进制位1010,结果为0000,十进制的结果为0
  • |:按位或运算符
  • ^:按位异或运算符。将给定的值对应的二进制数逐位进行逻辑异或运算。当数值不同时,则该位返回1,否则返回0。例如select 1 ^ 10;,二进制结果为1011,十进制的结果为11
  • ~:按位取反运算符。将给定的值的二进制数逐位进行取反操作,即将1变为0,将0变为1。例如select ~1;,二进制结果为1110,十进制结果为14
  • >>:按位右移运算符。将给定的值的二进制数的所有位右移指定的位数。右移指定的位数后,右边低位的数值被移出并丢弃,左边高位空出的位置用0补齐。例如select 10 >> 2;,右移2位的二进制结果为0010,十进制的结果为2
  • <<:按位左移运算符。将给定的值的二进制数的所有位左移指定的位数。左移指定的位数后,左边高位的数值被移出并丢弃,右边低位空出的位置用0补齐。例如select 10 << 2;,左移2位的二进制结果为00101000,十进制结果为40

猜你喜欢

转载自blog.csdn.net/yy8623977/article/details/126290648