📜  PL SQL-运算符(1)

📅  最后修改于: 2023-12-03 15:33:42.699000             🧑  作者: Mango

PL/SQL 运算符

PL/SQL 运算符是用于执行各种操作的符号。PL/SQL 有多种类型的运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符和条件运算符。

算术运算符

算术运算符用于执行基本的算术运算,如加、减、乘、除和取模。下表列出了 PL/SQL 中的算术运算符。

| 运算符 | 描述 | | ------ | ---- | | + | 加法 | | - | 减法 | | * | 乘法 | | / | 除法 | | MOD | 取模 |

示例
DECLARE
   a NUMBER := 10;
   b NUMBER := 5;
BEGIN
   DBMS_OUTPUT.PUT_LINE(a + b); -- 输出 15
   DBMS_OUTPUT.PUT_LINE(a - b); -- 输出 5
   DBMS_OUTPUT.PUT_LINE(a * b); -- 输出 50
   DBMS_OUTPUT.PUT_LINE(a / b); -- 输出 2
   DBMS_OUTPUT.PUT_LINE(a MOD b); -- 输出 0
END;
关系运算符

关系运算符用于比较两个值之间的关系。下表列出了 PL/SQL 中的关系运算符。

| 运算符 | 描述 | | ------ | -------------- | | = | 等于 | | <> | 不等于 | | > | 大于 | | < | 小于 | | >= | 大于等于 | | <= | 小于等于 | | BETWEEN| 在指定范围内 | | LIKE | 模糊匹配 | | IN | 指定列表中的值 |

示例
DECLARE
   a NUMBER := 10;
   b NUMBER := 5;
BEGIN
   IF (a > b) THEN
      DBMS_OUTPUT.PUT_LINE('a 大于 b');
   END IF;
   
   IF (a < b) THEN
      DBMS_OUTPUT.PUT_LINE('a 小于 b');
   END IF;
   
   IF (a = b) THEN
      DBMS_OUTPUT.PUT_LINE('a 等于 b');
   ELSE
      DBMS_OUTPUT.PUT_LINE('a 不等于 b');
   END IF;
   
   IF (a >= b) THEN
      DBMS_OUTPUT.PUT_LINE('a 大于等于 b');
   END IF;
   
   IF (a <= b) THEN
      DBMS_OUTPUT.PUT_LINE('a 小于等于 b');
   END IF;
   
   IF (a BETWEEN 0 AND 100) THEN
      DBMS_OUTPUT.PUT_LINE('a 在 0 和 100 之间');
   END IF;
   
   IF ('Hello, World!' LIKE 'Hello%') THEN
      DBMS_OUTPUT.PUT_LINE('字符串以 Hello 开头');
   END IF;

   IF (a IN (1, 2, 3, 4, 5)) THEN
      DBMS_OUTPUT.PUT_LINE('a 在指定列表中');
   END IF;
END;
逻辑运算符

逻辑运算符用于执行逻辑操作,如与、或和非。下表列出了 PL/SQL 中的逻辑运算符。

| 运算符 | 描述 | | ------ | -------------- | | AND | 与运算 | | OR | 或运算 | | NOT | 非运算 | | XOR | 异或运算 |

示例
DECLARE
   a NUMBER := 10;
   b NUMBER := 5;
   c NUMBER := 15;
BEGIN
   IF ((a > b) AND (c > a)) THEN
      DBMS_OUTPUT.PUT_LINE('a 大于 b 并且 c 大于 a');
   END IF;
   
   IF ((a > b) OR (c < a)) THEN
      DBMS_OUTPUT.PUT_LINE('a 大于 b 或者 c 小于 a');
   END IF;
   
   IF NOT (a > b) THEN
      DBMS_OUTPUT.PUT_LINE('a 不大于 b');
   END IF;
   
   IF (a XOR b) THEN
      DBMS_OUTPUT.PUT_LINE('a 和 b 中只有一个为真');
   END IF;
END;
位运算符

位运算符用于执行按位操作,如按位与、按位或和按位异或。下表列出了 PL/SQL 中的位运算符。

| 运算符 | 描述 | | ------ | -------- | | & | 按位与 | | | | 按位或 | | ^ | 按位异或 | | ~ | 取反 | | << | 左移位 | | >> | 右移位 |

示例
DECLARE
   a NUMBER := 12; -- 十进制 12,二进制 1100
   b NUMBER := 25; -- 十进制 25,二进制 11001
BEGIN
   DBMS_OUTPUT.PUT_LINE(a & b); -- 输出 8(二进制 1000)
   DBMS_OUTPUT.PUT_LINE(a \| b); -- 输出 29(二进制 11101)
   DBMS_OUTPUT.PUT_LINE(a ^ b); -- 输出 21(二进制 10101)
   DBMS_OUTPUT.PUT_LINE(~a); -- 输出 -13(二进制 11111111111111111111111111110011)
   DBMS_OUTPUT.PUT_LINE(a << 2); -- 输出 48(二进制 110000)
   DBMS_OUTPUT.PUT_LINE(a >> 2); -- 输出 3(二进制 11)
END;
条件运算符

条件运算符用于在条件为真时执行一个操作,在条件为假时执行另一个操作。下表列出了 PL/SQL 中的条件运算符。

| 运算符 | 描述 | | ------ | ------------------- | | CASE | 多分支条件语句 | | IF | 单分支条件语句 | | NULLIF | 对比两个表达式是否相等,如果相等则返回 NULL | | COALESCE | 返回第一个非 NULL 表达式 |

示例
DECLARE
   rank NUMBER := 80;
BEGIN
   /* 使用 IF-THEN-ELSE 语句 */
   IF rank >= 90 THEN
      DBMS_OUTPUT.PUT_LINE('优秀');
   ELSIF rank >= 80 THEN
      DBMS_OUTPUT.PUT_LINE('良好');
   ELSIF rank >= 70 THEN
      DBMS_OUTPUT.PUT_LINE('一般');
   ELSE
      DBMS_OUTPUT.PUT_LINE('需要改进');
   END IF;
   
   /* 使用 NULLIF 函数 */
   DBMS_OUTPUT.PUT_LINE(NULLIF(5, 5)); -- 输出 NULL
   DBMS_OUTPUT.PUT_LINE(NULLIF(5, 6)); -- 输出 5
   
   /* 使用 COALESCE 函数 */
   DBMS_OUTPUT.PUT_LINE(COALESCE(NULL, '一', '二')); -- 输出 一
   DBMS_OUTPUT.PUT_LINE(COALESCE(NULL, NULL, '三')); -- 输出 三
END;