sql中的iif語句詳解

黄舟
發布: 2017-02-20 11:50:24
原創
4252 人瀏覽過

[導讀] 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中文網(m.sbmmt.com)!


相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!