在執(zhí)行 Transact-SQL 語句時強(qiáng)加條件。如果條件滿足(布爾表達(dá)式返回 TRUE 時),則在 IF 關(guān)鍵字及其條件之后執(zhí)行 Transact-SQL 語句。可選的 ELSE 關(guān)鍵字引入備用的 Transact-SQL 語句,當(dāng)不滿足 IF 條件時(布爾表達(dá)式返回 FALSE),就執(zhí)行這個語句。
IF Boolean_expression
{ sql_statement | statement_block
}
}
[ ELSE
{ sql_statement | statement_block ]
Boolean_expression
是返回 TRUE 或 FALSE 的表達(dá)式。如果布爾表達(dá)式中含有 SELECT 語句,必須用圓括號將 SELECT 語句括起來。
{sql_statement | statement_block}
Transact-SQL 語句或用語句塊定義的語句分組。除非使用語句塊,否則 IF 或 ELSE 條件只能影響一個 Transact-SQL 語句的性能。若要定義語句塊,請使用控制流關(guān)鍵字 BEGIN 和 END。如果在 IF...ELSE 塊的 IF 區(qū)和 ELSE 區(qū)都使用了 CREATE TABLE 語句或 SELECT INTO 語句,那么 CREATE TABLE 語句或 SELECT INTO 語句必須指向是相同的表名。
IF...ELSE 結(jié)構(gòu)可以用在批處理中,存儲過程中(經(jīng)常使用這種結(jié)構(gòu)測試是否存在著某個參數(shù)),以及特殊查詢中。
可以在其它 IF 之后或在 ELSE 下面,嵌套另一個 IF 測試。對于嵌套層數(shù)沒有限制。
下面的示例顯示帶有語句塊的 IF 條件。如果書的平均價格不低于 $15,那么就顯示文本:Average title price is more than $15.
USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
PRINT 'Average title price is more than $15.'
下面是結(jié)果集:
The following titles are excellent mod_cook books:
Title
-----------------------------------
Silicon Valley Gastronomic Treats
The Gourmet Microwave
(2 row(s) affected)
下面的示例使用了兩個 IF 塊。如果書的平均價格不低于 $15,那么就顯示文本:Average title price is more than $15。如果現(xiàn)代烹調(diào)書的平均價格高于 $15,則顯示現(xiàn)代烹調(diào)書價格昂貴的語句。
相關(guān)文章USE pubs
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') < $15
BEGIN
PRINT 'The following titles are excellent mod_cook books:'PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END
ELSE
IF (SELECT AVG(price) FROM titles WHERE type = 'mod_cook') > $15
BEGIN
PRINT 'The following titles are expensive mod_cook books:'
PRINT ' '
SELECT SUBSTRING(title, 1, 35) AS Title
FROM titles
WHERE type = 'mod_cook'
END