运算符


字符串连接

  • A || B
    • 相当于 ”字符串处理函数“ concat(A,B) 的简写,参考
select 'hello' || 'world';
select "hello" || "world";

001


加减乘除

select 2 + 3;
select 2 - 3;
select 2 * 3;
select 3 / 2, 3 DIV 2;
select 2 % 3,;

002

  • /DIV 都是 “除以”
    • 后者的结果通过 rounded 取整
  • 另外还有一个 “数学函数” pmod(INT a, INT b)pmod(DOUBLE a, DOUBLE b) 可以用来取模,返回余数的绝对值,参考

位运算

  • 按位与运算
    • &,同 1 为 1 ,一 0 为 0
  • 按位或运算
    • |,一 1 为 1 ,同 0 为 0
  • 按位异或运算
    • ^,相同为 0 ,不同为 1
  • 按位取反运算
    • ~,1 为 0 ,0 为 1
select 1 & 2;
select 1 | 2;
select 1 ^ 2;
select ~ 2;

003


比较判断

  • 相等大小判断

    • === ,相等

      • 相等则 true ,不相等则 false
      • 只能用于非 NULL 的比较(左右两个比较对象,只要有一个是 NULL ,则返回 NULL)
    • <=> ,相等

      • 能够正确对 NULL 进行比较
    • !=<>,不相等

      • 相等则 false ,不相等则 true
      • 只能用于非 NULL 的比较
    • < ,小于

      • 只能用于非 NULL 的比较
    • <= ,小于等于

      • 只能用于非 NULL 的比较
    • > ,大于

      • 只能用于非 NULL 的比较
    • >= ,大于等于

      • 只能用于非 NULL 的比较
  • 是否处于某个范围内

    • A BETWEEN B AND C

      • A 在 B C 之间(含等于其中一个)
    • A NOT BETWEEN B AND C

      • A 不在 B C 之间
    • 3 个操作对象,只要有一个为 NULL ,则返回 NULL

    • select 5 BETWEEN 1 AND 5;
      select "2020-10-01" BETWEEN "2020-09-01" AND "2020-11-01";
      select 'a' BETWEEN 'b' AND 'c';
      select 'ab' BETWEEN 'aa' AND 'bb';
      select 'ab' NOT BETWEEN 'aa' AND 'bb';
      
    • 004

  • 是否 NULL

  • 相似与正则

    • A [NOT] LIKE B
      • 逐个字符进行比较
      • _ 匹配任意单个字符,% 匹配任意数量的任意字符
      • 通配符只能在 B 中使用
      • 005
    • A RLIKE BA REGEXP B
      • 在 B 中支持使用 JAVA 正则
      • 只要 A 字符串(或其包含的任意子串)能匹配 B 正则,就返回 true
      • 006
    • 只能用于字符串类型
    • 两个操作对象,只要有一个为 NULL ,则返回 NULL
  • 是否为 TRUE | FALSE

    • A IS [NOT] (TRUE|FALSE)
    • 只能用于 Boolean 类型
    • since:3.0.0

逻辑运算

  • 与、或、非
    • A AND B ,与
      • A B 均为 true,才返回 true ;否则返回 false
    • A OR B ,或
      • A B 只要有一个为 true,则返回 true ;只有两个都是 false 时,才返回 false
    • NOT A! A ,非
      • A 是 true ,则返回 false ,反之相反
    • 只能用于 boolean 类型
  • A [NOT] IN (val1, val2, ...)
    • 007
  • [NOT] EXISTS (subquery)
    • 如果子查询返回至少一条记录,则返回 true ;反之返回 false

集合类型相关

参考集合相关函数


运算优先级

010