程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> sql中的iif語句詳解

sql中的iif語句詳解

編輯:關於MYSQL數據庫

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved