[導讀] IIf 傳回由邏輯測試決定的兩個數值或字串值之一。 語法數字IIf(«Logical Expression», «Numeric Expression1», «Numeric Expression2») 如果«Logica
IIf
傳回由邏輯測試確定的兩個數值或字串值之一。
語法
數字
IIf(«Logical Expression», «Numeric Expression1», «Numeric Expression2»)
如果«Logical Expression» 取值為TRUE,則此函數傳回«Numeric Expression1»,否則,回傳«Numeric Expression2» 。
字串
IIf(«Logical Expression», «String Expression1», «String Expression2»)
如果 «Logical Expression» 取值為 TRUE,則此函數傳回 «String Expression1»,否則,傳回 «String Expression2»。
註
只有當 «Logical Expression» 的值為零時,才認為該表達式是 FALSE。任何其它值都被解釋為 TRUE。
不建議以 Iif 函數基於搜尋條件建立成員的集合。請改用 Filter 函數根據邏輯表達式評估指定集合中的每個成員,然後傳回成員的子集合。
範例
數字
如果Measures.CurrentMember 是空單元,則下面的範例傳回0,否則傳回1:
IIf(IsEmpty(Measures.CurrentMember), 0, 1)
字串
如果Measures .CurrentMember 是空單元,則下面的字串回傳字串"Yes",否則傳回字串"No":
IIf(IsEmpty(Measures.CurrentMember), "Yes", "No")
在Access中我可以用IIF函數進行統計匯總,比如,要知道實際應該要繳費的用戶個數:
Select sum(iif(金額> 0, 1,0)) as num from 費用
在SQL Server中好像沒有對應的函數,我用:
select sum(case when 金額>0 then 1 else 0 end) as num from 費用
好像不太直觀,不知道有沒有其它方法
case when ....then else end
例:
select id,case when bz='1' then xx when bz='2' then yy else zz end as tt from xxx
那MID,LEFT等呢?在SQL中怎麼用?
MID 就是SQL 裡的substring
LEFT 就是SQL 裡的LEFT
例如substring(字段,開始位置,取多少長度)
left(字段,取多少長度)
SUBSTRING ( expression , start , length )
參數
expression
是字串、二進位字串、text、image、列或包含列的表達式。不要使用包含聚合函數的表達式。
start
是一個整數,指定子字串的開始位置。
length
是一個整數,指定子字串的長度(要傳回的字元數或位元組數)。
LEFT
傳回從字串左邊開始指定個數的字元。
語法
LEFT ( character_expression , integer_expression )
參數
character_expression
字元或二進位資料表達式。 character_expression 可以是常數、變數或欄位。 character_expression 必須是可以隱含轉換為 varchar 的資料型別。否則,請使用 CAST 函數明確轉換 character_expression。
integer_expression
是正整數。如果 integer_expression 為負,則傳回空字串。
回傳類型
varchar
以上就是 sql中的iif語句詳解的內容,更多相關內容請關注PHP中文網(www.php.cn)!