SQL - IIF() 函式



SQL 的IIF()函式用於驗證條件是真還是假。

它接受三個引數boolean_expression、true_valuefalse_value,並根據 SQL Server 中布林表示式計算結果為真還是假返回兩個值之一。如果條件為真,則返回true_value;否則返回false_value

注意 - 如果表示式不是布林表示式或無效表示式,則IIF()函式將丟擲錯誤。

語法

以下是 SQL IIF()函式的語法:

IIF( boolean_expression, true_value, false_value )

引數

  • boolean_expression - 它是一個有效的布林表示式。

  • true_value - 它可以是任何資料型別的值,當布林表示式計算結果為true時返回。

  • false_value - 它可以是任何資料型別的值,當布林表示式計算結果為false時返回。

返回值

此函式根據 boolean_expression 返回兩個值之一。

示例

在下面的示例中,我們使用 SQL IIF()函式來驗證布林表示式'10>5'是否計算結果為真 (返回 1) 或假 (返回 0)。

SELECT IIF(10>5, 1, 0) as Result;

輸出

執行上述程式後,將產生以下輸出:

+-------+
| Result|
+-------+
| 1     |
+-------+

示例

以下是 SQL IIF()函式的另一個示例,在這裡我們使用此函式來比較兩個字串'Hello''World'的長度,以確定哪個更長。

DECLARE
@STR1 VARCHAR(10) = 'Hello', @STR2 VARCHAR(10) = 'World';
SELECT IIF(LEN(@STR1) > LEN(@STR2), @STR1 + ' string is larger', @STR2 + ' string is larger ') as Result;

輸出

以下是上述語句的輸出:

+-------------------------+
| Result                  |
+-------------------------+
| World string is larger  |
+-------------------------+

示例

如果我們傳遞無效的 boolean_expression,則此函式會丟擲錯誤。

在此示例中,我們使用 SQL IIF()函式來驗證布林表示式'a>b'是否計算結果為true (返回 'valid')false (返回 'invalid')

SELECT IIF('a>b', 'valid', 'invalid');

輸出

上述 SQL 語句產生以下輸出:

An expression of non-boolean type specified in a context where a condition is expected, near '('.

示例

您還可以將表列作為引數傳遞給 SQL IIF()函式,以驗證哪個客戶的薪水大於特定金額。假設我們使用CREATE語句建立了一個名為Customer的表,如下所示:

CREATE TABLE CUSTOMERS(    
   ID INT NOT NULL,    
   NAME VARCHAR (20) NOT NULL,    
   AGE INT NOT NULL,    
   ADDRESS CHAR (25) ,    
   SALARY DECIMAL (18, 2));

現在,讓我們使用INSERT語句在Customers表中插入一些記錄,如下所示:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ); 
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (2, 'Khilan', 25, 'Delhi', 1500.00 ); 
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (3, 'kaushik', 23, 'Kota', 2000.00 ); 
INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES (4, 'Chaitali', 25, 'Mumbai', 6500.00 );

以下 SQL 查詢驗證Customer表中哪些客戶的薪水低於2000

SELECT ID, NAME, SALARY, IIF(SALARY > 2000, 'Salary is greater than 1000', 'Salary is less than 1000') AS RESULT FROM CUSTOMERS;

輸出

上述 SQL 查詢將生成以下輸出:

+----+----------+---------------+-----------------------------+
| ID | NAME     | SALARY        | RESULT                      |
+----+----------+---------------+-----------------------------+
|  1 | Ramesh   | 2000.00       | Salary is less than 1000    |
|  2 | Khilan   | 1500.00       | Salary is less than 1000    |
|  3 | kaushik  | 2000.00       | Salary is less than 1000    |
|  4 | Chaitali | 6500.00       | Salary is greater than 1000 |
+----+----------+---------------+-----------------------------+

注意 - 您還可以使用IIf()函式檢查年齡大於指定年齡標準的客戶的年齡。

sql-logical-funtions.htm
廣告