日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

條件表達式

云原生數據倉庫 AnalyticDB PostgreSQL 版兼容PostgreSQL條件表達式。本文簡單列舉云原生數據倉庫 AnalyticDB PostgreSQL 版兼容的條件表達式及用法示例。

PostgreSQL條件表達式的詳細使用方法,請參見PostgreSQL官方文檔:條件表達式

使用限制

COALESCEGREATESTLEAST在語法上類似于函數,但它們不是普通的函數,因此不能使用顯式VARIADIC數組參數。

CASE

CASE表達式是一種通用的條件表達式,類似于其它編程語言中的if/else語句,是一種條件控制結構,允許在查詢中根據不同的條件返回不同的結果。

語法

CASE
   WHEN expression = value THEN result
   [WHEN expression = value THEN result ...]
   [ELSE else_result]
END

簡化形式:

CASE
   WHEN condition THEN result
   [WHEN condition THEN result ...]
   [ELSE else_result]
END

功能描述

  • WHEN condition THEN result: 這一部分定義了條件和對應的返回結果,可以有多個這樣的條件分支。

    • condition: 一個布爾表達式,用來測試是否為真。

    • result: 當condition為真時返回的值。

  • ELSE else_result: 可選部分,如果以上所有條件都不滿足,則返回else_result。如果不包括ELSE部分且所有條件都不成立時,CASE表達式將返回 NULL。

使用示例

假設有一個員工表employees,包含salarybonus列,根據薪資等級分配獎金比例。

SELECT name, salary,
       CASE
           WHEN salary < 30000 THEN salary * 0.05  -- 5% bonus for low salaries
           WHEN salary BETWEEN 30000 AND 50000 THEN salary * 0.10  -- 10% for medium
           ELSE salary * 0.15  -- 15% for high salaries
       END AS bonus_amount
FROM employees;

在這個例子中,根據員工的薪水范圍,使用 CASE 表達式計算不同的獎金比例。

COALESCE

COALESCE表達式用于返回其參數列表中第一個非空的值。在處理可能含有空值的列或表達式時,可以幫助您設定一個默認值。

語法

COALESCE(value1, value2, ..., valueN)

功能描述

  • COALESCE會從左到右評估它的參數。

  • 當遇到第一個非 NULL 的參數時,立即返回該參數的值,并停止進一步的評估。

  • 如果所有參數都是 NULL,那么COALESCE函數將返回 NULL。

使用示例

假設有一個員工表employees,其中一些員工的email可能為空(NULL)。

SELECT id, name, COALESCE(email, 'no_email@example.com') AS email
FROM employees;

在這個查詢中:

  • 如果email字段的值為 NULL,那么COALESCE將返回'no_email@example.com'作為默認郵箱地址。

  • 如果email字段有實際值,那么就直接返回該郵箱地址。

NULLIF

語法

NULLIF(expression1, expression2)

功能描述

  • expression1expression2是需要比較的兩個值或表達式。

  • 如果expression1等于expression2,那么NULLIF返回 NULL。

  • 如果expression1不等于expression2,則返回expression1的值。

使用示例

假設有一個訂單表orders,其中包含了商品的價格和數量,計算每件商品的平均價格。

SELECT product_id, 
       SUM(price * quantity) / NULLIF(SUM(quantity), 0) AS average_price
FROM orders
GROUP BY product_id;

在這個查詢中:

  • 如果某個商品的總數量(SUM(quantity))為0,那么NULLIF會返回 NULL,這樣在計算平均價格時就可以避免除以零的錯誤。

  • 如果商品有銷售記錄,即SUM(quantity)不為0,NULLIF返回SUM(quantity)的值,繼續正常計算平均價格。

GREATEST

用于從一系列指定的值中返回最大值。如果有多個值并列最大,它將返回其中之一。如果所有參數都是 NULL,那么 GREATEST 函數的結果也是 NULL。

語法

GREATEST(value1, value2, ..., valueN)

使用示例

SELECT GREATEST(10, 20, 30); -- 返回 30
SELECT GREATEST(5, 5, 2);     -- 返回 5
SELECT GREATEST(NULL, 1, 2); -- 返回 2
SELECT GREATEST(NULL, NULL); -- 返回 NULL

LEAST

用于從一系列指定的值中返回最小值。如果有多個值并列最小,它將返回其中之一。如果所有參數都是 NULL,那么LEAST函數的結果也是 NULL。

語法

LEAST(value1, value2, ..., valueN)

使用示例

SELECT LEAST(10, 20, 30); -- 返回 10
SELECT LEAST(5, 5, 2);     -- 返回 2
SELECT LEAST(NULL, 1, 2); -- 返回 1
SELECT LEAST(NULL, NULL); -- 返回 NULL