三元表達式(ternary expression)是一種簡潔的條件表達式,它可以根據一個條件來返回兩個值中的一個。在 PL/SQL 中,三元表達式并不直接存在,但我們可以使用 CASE 表達式或 DECODE 函數來實現類似的功能。
以下是一些在 PL/SQL 中使用 CASE 表達式和 DECODE 函數的應用場景:
-- 使用 CASE 表達式
SELECT employee_id, salary,
CASE
WHEN salary < 5000 THEN salary * 1.1
ELSE salary * 1.05
END AS new_salary
FROM employees;
-- 使用 DECODE 函數
SELECT employee_id, salary,
DECODE(SIGN(salary - 5000), -1, salary * 1.1, salary * 1.05) AS new_salary
FROM employees;
-- 使用 CASE 表達式
SELECT employee_id, age,
CASE
WHEN age < 30 THEN 'Young'
WHEN age BETWEEN 30 AND 50 THEN 'Middle-aged'
ELSE 'Senior'
END AS age_group
FROM employees;
-- 使用 DECODE 函數
SELECT employee_id, age,
DECODE(SIGN(age - 30), -1, 'Young', 0, 'Middle-aged', 'Senior') AS age_group
FROM employees;
-- 使用 CASE 表達式
SELECT order_id, status,
CASE
WHEN status = 'Pending' THEN 'Please pay your order.'
WHEN status = 'Shipped' THEN 'Your order has been shipped.'
WHEN status = 'Completed' THEN 'Thank you for your purchase!'
ELSE 'Unknown status'
END AS message
FROM orders;
-- 使用 DECODE 函數
SELECT order_id, status,
DECODE(status, 'Pending', 'Please pay your order.',
'Shipped', 'Your order has been shipped.',
'Completed', 'Thank you for your purchase!',
'Unknown status') AS message
FROM orders;
通過使用 CASE 表達式或 DECODE 函數,我們可以在 PL/SQL 中實現類似于三元表達式的功能,從而簡化代碼并提高可讀性。