COALESCE()、isnull()、nullif()函数的用法
用法 Select ?COALESCE(null,null,'1','2') 返回1
作用 返回其參數中第一個非空表達式。
isnull()
用法 Select? isnull(null,0) 返回 0
作用 遇到null 返回 指定值
nullif()
用法 nullif('aa','aa')? 返回 null,? nullif(1,2)? 返回 1
作用 兩個值相等則返回null http://blog.csdn.net/topsjava/article/details/1746152
NULLIF 函數
功能?
通過比較表達式提供縮寫的 CASE 表達式。
語法?
NULLIF?(?expression-1,?expression-2?)
參數?
expression-1????要比較的表達式。
expression-2????要比較的表達式。
用法?
NULLIF 比較兩個表達式的值。
如果第一個表達式的值與第二個表達式的值相等,NULLIF 返回 NULL。
如果第一個表達式的值不等于第二個表達式的值,或者第二個表達式為 NULL,則 NULLIF 返回第一個表達式。
NULLIF 函數提供了編寫某些 CASE 表達式的簡便方法。
標準和兼容性?
-
SQL/92????初級特性。
-
SQL/99????核心特性。
示例?
下面的語句返回值 a:
SELECT NULLIF( 'a', 'b' )下面的語句返回 NULL。
SELECT NULLIF( 'a', 'a' ) ---------------------------------------------------------------------------------------------------CASE 表達式
CASE 表達式提供條件 SQL 表達式。Case 表達式可以在能夠使用表達式的任何地方使用。
CASE 表達式的語法如下:
CASE?expression
WHEN?expression
THEN?expression,?...
[?ELSE?expression?]
END
如果 CASE 語句后的表達式等于 WHEN 語句后的表達式,則返回 THEN 語句后的表達式。否則,返回 ELSE 語句后的表達式(如果它存在)。
例如,以下代碼用 CASE 表達式作為 SELECT 語句的第二子句。
SELECT id, ( CASE name WHEN 'Tee Shirt' then 'Shirt' WHEN 'Sweatshirt' then 'Shirt' WHEN 'Baseball Cap' then 'Hat' ELSE 'Unknown' END ) as Type FROM "DBA".Product可以替換的語法如下:
CASE
WHEN?search-condition
THEN?expression,?...
[?ELSE?expression?]
END
如果滿足 WHEN 語句后的搜索條件,則返回 THEN 語句后的表達式。否則,返回 ELSE 語句后的表達式(如果它存在)。
例如,以下語句用 CASE 表達式作為 SELECT 語句的第三子句,以將字符串與搜索條件相關聯。
SELECT id, name, ( CASE WHEN name='Tee Shirt' then 'Sale' WHEN quantity >= 50 then 'Big Sale' ELSE 'Regular price' FROM "DBA".Product用于簡寫 CASE 表達式的 NULLIF 函數?
NULLIF 函數提供了一種以短格式寫出某些 CASE 語句的方法。NULLIF 語法如下:
NULLIF?(?expression-1,?expression-2?)
NULLIF 比較兩個表達式的值。如果第一個表達式的值與第二個表達式的值相等,NULLIF 返回 NULL。如果它們不相等,NULLIF 則返回第一個表達式。
CASE 語句不同于 CASE 表達式?不要將 CASE 表達式的語法和 CASE 語句的語法混淆。 |
CASE 語句
說明?
此語句用于根據多種情況選擇執行路徑。
語法 1?
CASE?value-expression
WHEN?[?constant?|?NULL?]?THEN?statement-list?...
[?WHEN?[?constant?|?NULL?]?THEN?statement-list?]?...
[?ELSE?statement-list?]
END?CASE
語法 2?
CASE
WHEN?[?search-condition?|?NULL]?THEN?statement-list?...
[?WHEN?[?search-condition?|?NULL]?THEN?statement-list?]?...
[?ELSE?statement-list?]
END?CASE
用法?
語法 1????CASE 語句是控制語句,它允許您根據表達式的值選擇要執行的 SQL 語句列表。 value-expression 是具有單值的表達式,它的值可以是字符串、數字、日期或其它 SQL 數據類型。如果 value-expression 的值存在匹配的 WHEN 子句,則執行 WHEN 子句中的 statement-list。如果沒有合適的 WHEN 子句而有 ELSE 子句,則執行 ELSE 子句中的 statement-list。執行在 END CASE 后的第一個語句重新開始。
如果 value-expression 可以為空,使用 ISNULL 函數用不同的表達式替換 NULL value-expression。
語法 2????在這種格式下,執行 CASE 語句中第一個滿足 search-condition 的語句。如果不滿足 search-conditions,則執行 ELSE 子句。
如果表達式可以為 NULL,對第一個 search-condition 使用以下語法:
WHEN search-condition IS NULL THEN statement-list權限?
無。
副作用?
無。
標準和兼容性?
SQL/92????持久存儲模塊特性。SQL/99????持久存儲模塊特性。
示例?
下面的過程使用 CASE 語句,將示例數據庫的產品表中列出的產品分為襯衣、帽子、短褲、未知幾大類。
CREATE PROCEDURE ProductType (IN product_id INT, OUT type CHAR(10)) BEGIN DECLARE prod_name CHAR(20); SELECT name INTO prod_name FROM "DBA"."product" WHERE id = product_id; CASE prod_name WHEN 'Tee Shirt' THEN SET type = 'Shirt' WHEN 'Sweatshirt' THEN SET type = 'Shirt' WHEN 'Baseball Cap' THEN SET type = 'Hat' WHEN 'Visor' THEN SET type = 'Hat' WHEN 'Shorts' THEN SET type 'Shorts' ELSE SET type = 'UNKNOWN' END CASE; END下面的示例使用語法 2 生成關于示例數據庫中產品數量的消息。
CREATE PROCEDURE StockLevel (IN product_id INT) BEGIN DECLARE qty INT; SELECT quantity INTO qty FROM product WHERE id = product_id; CASE WHEN qty < 30 THEN MESSAGE 'Order Stock' TO CLIENT; WHEN qty > 100 THEN MESSAGE 'Overstocked' TO CLIENT; ELSE MESSAGE 'Sufficient stock on hand' TO CLIENT; END CASE; END總結
以上是生活随笔為你收集整理的COALESCE()、isnull()、nullif()函数的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Drools 规则语言详解(上)
- 下一篇: 【NUMBER】有关Oracle NUM