access中case替代方法
SELECT
UserPassportID as PassportID,
UserID,
GrantorID,
Case ObjectTypeID
When 1 then ObjectID
End
as TerminalID,
Type, Flag, GrantDate, Validate, Invalidate
From UserPassport
在SQL裡能執行,但在Access裡總提示語法錯誤(操作符丟失).在查詢表示式'Case ObjectTypeID
When 1 then ObjectID
End'中?
Sql:
select bb,cc,case aa when '一星級' then '*'
when '二星級' then '** '
when '三星級' then '*** '
when '四星級' then '**** '
when '五星級' then '***** '
end
from aaa
Access:
select bb,cc,iif(aa='一星級','*',iif(aa='二星級','**',iif(aa='三星級','***',iif(aa='四星級','****',iif(aa='五星級','*****')))))
from aaa;
Access中Switch和Choose關鍵字的用法Access中程式流程函式有三個,Iif ,Switch
Switch關鍵字
Access中沒有Case When的用法,所以對於某些篩選比較就顯得很吃力。不過還好,Access中有一個Switch可以解決這個問題。Switch 的語法是:SWITCH( case_1, result_1[, case_2, result_2...])。Switch的計算順序為從左到右,將返回第一個為true的case對應的result。ACCESS對Switch有預編譯(基本能夠寫進ACCESS的Sql都有預編譯,ACCESS不支援Execute(SqlString)的用法),所以Switch中的條件和結果不能有邏輯錯誤和語法錯誤,否則不能執行。
例項:表tUser中有欄位sex Text(1),用於儲存使用者性別,其中,如sex='m',使用者為男性;sex='f',使用者為女性;其他情況為保密。為了便於sql語句的說明,我們假設還有其他兩個欄位,userid和username。
在SqlServer中,如果要在搜尋結果中直接顯示性別的名稱SexName(不是m/f之類的程式碼
SELECT UserID,
UserName,
SexName = WHEN LCASE(Sex)
CASE 'm' THEN N'男'
CASE 'f' THEN N'女'
ELSE N'保密' END
FROM tUser
ACCESS不支援WHEN CASE的用法。雖然不那麼靈巧,但是用Switch可以解決這個問題。
SELECT UserID,
UserName,
SWITCH(
Sex = 'f', '男',
Sex = 'm', '女',
True, '保密'
) AS SexName
FROM tUser
上述中最後一個Case為true,該用法類似於When Case語法中的Else。
Choose關鍵字
對於Choose關鍵字的用法,暫時沒有想到在它與SQLServer中的那個用法對應。
Choose函式的語法如下:Choose(Index,Choice_1[,Choice_2...])。其中,Index為從1開始的整數,Choice對應的是與Index相對應的選擇項的值。
一時沒有想到太好的例子,就用上面的那個關於使用者性別的例子吧。假如上面的sex使用1替代m,代表男性,2替代f,代表女性。
SELECT UserID,
UserName,
IIF(CHOOSE(CINT(Sex),'男性','女性') IS NULL,
'保密',
CHOOSE(CINT(Sex),'男性','女性')
) AS SexName
FROM tUser
Access中程式流程函式有三個,Iif ,Switch 和 Choose。IIF的用法已經很常見了,網上搜一下大把打把的。這兒主要講後面的兩個:Switch和Choose。
Switch關鍵字
Access中沒有Case When的用法,所以對於某些篩選比較就顯得很吃力。不過還好,Access中有一個Switch可以解決這個問題。Switch 的語法是:SWITCH( case_1, result_1[, case_2, result_2...])。Switch的計算順序為從左到右,將返回第一個為true的case對應的result。ACCESS對Switch有預編譯(基本能夠寫進ACCESS的Sql都有預編譯,ACCESS不支援Execute(SqlString)的用法),所以Switch中的條件和結果不能有邏輯錯誤和語法錯誤,否則不能執行。
例項:表tUser中有欄位sex Text(1),用於儲存使用者性別,其中,如sex='m',使用者為男性;sex='f',使用者為女性;其他情況為保密。為了便於sql語句的說明,我們假設還有其他兩個欄位,userid和username。
在SqlServer中,如果要在搜尋結果中直接顯示性別的名稱SexName(不是m/f之類的程式碼),使用Case When很方便。
SELECT UserID,
UserName,
SexName = WHEN LCASE(Sex)
CASE 'm' THEN N'男'
CASE 'f' THEN N'女'
ELSE N'保密' END
FROM tUser
ACCESS不支援WHEN CASE的用法。雖然不那麼靈巧,但是用Switch可以解決這個問題。
SELECT UserID,
UserName,
SWITCH(
Sex = 'f', '男',
Sex = 'm', '女',
True, '保密'
) AS SexName
FROM tUser
上述中最後一個Case為true,該用法類似於When Case語法中的Else。
Choose關鍵字
對於Choose關鍵字的用法,暫時沒有想到在它與SQLServer中的那個用法對應。
Choose函式的語法如下:Choose(Index,Choice_1[,Choice_2...])。其中,Index為從1開始的整數,Choice對應的是與Index相對應的選擇項的值。
一時沒有想到太好的例子,就用上面的那個關於使用者性別的例子吧。假如上面的sex使用1替代m,代表男性,2替代f,代表女性。
SELECT UserID,
UserName,
IIF(CHOOSE(CINT(Sex),'男性','女性') IS NULL,
'保密',
CHOOSE(CINT(Sex),'男性','女性')
) AS SexName
FROM tUser
如果你說sex還是使用的m/f,那麼怎麼用?,可以畫蛇添足,使用Choose + Switch的巢狀啊。具體的巢狀程式碼我就不寫了,沒有什麼價值,主要是在CInt(Sex)那兒巢狀,通過Switch對不同的Sex取不同的Index值。
實話實說,我還沒有發現Choose有什麼更好的意義。因為Index對應的Choice都是索引好的,就是說需要事先定義的。相對來說,這樣就很不靈活了。索引項都是一個一個寫的(本文不討論在資料庫外生成Sql的情況),這很麻煩。功能上Switch可以滿足它的所有功能,而且更靈活,邏輯更清晰。
通過看這個得到了我要的結果:
update tb_valuation as a,(select iif(State='稽核','阻止',iif(State='阻止','稽核',iif(State='新點評','稽核'))) as b from tb_valuation where [email protected]) as c set State=c.b where [email protected];
與sql2005相比的查詢
select fatherid =case fatherid
when 1 then 'aaa'
when 2 then 'bbb'
else 'ccc '
end
from [111]
相關推薦
access中case替代方法
SELECTUserPassportID as PassportID,UserID,GrantorID,Case ObjectTypeID When 1 then ObjectIDEnd as TerminalID,Type, Flag, GrantDate, Validate, InvalidateFro
SQL 遊標中 WHILE 替代方法,減少SQL伺服器壓力
沒有必要使用fetch,改用這樣的方法,壓力會小很多 declare @id int set @id = 0 while 1=1 Begin Select Top 1 @id=ID From 表 Where ID>@id Order By ID
Access中替代case when的方法
最近在做一個用Access的東東,其中用到了case when的方式,但是Access是不支援這種語法的,查詢知道IIf和Swith可以作為替代,總結如下: IIf(expr, truepart, falsepart) IIf 函式的語法含有下面這些命名引數: 部分
Android中getDrawable和getColor過時的替代方法
this logs con 知識 log launcher 16px ase spa 版權聲明:本文為博主原創文章,未經博主允許不得轉載。 前言 Android SDK 升級到 23 之後,getDrawable和getColor方法提示過時。 解決方案 getRe
ACCESS中使用GUID全域性唯一識別符號的自動唯一編號 同步複製ID 之解決方法
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
Android中ViewPager的setOnPageChangeListener方法過時的替代方法
android.support.v4.view包裡的ViewPager可用於實現輪播圖。我們可以用ViewPager.setOnPageChangeListener(ViewPager.OnPageChangeListener)方法監聽其滑動事件,ViewPager.OnPageChangeLi
SparkSql實現access中的ip與ip規則庫的關聯(方法二)
根據業務不同,一般都是需要自定義udf來操作 package Test import Test.SQLIIpLocation1.ip2Long import org.apache.spark.broadcast.Broadcast import org.apache.spark.sql.{Da
SparkSql實現access中的ip與ip規則的關聯(方法一)
package Test import org.apache.spark.sql.{DataFrame, Dataset, SparkSession} /** * 使用SparkSql實現access中的ip與ip規則的關聯 * 前提條件:需要提前拿到全量的ip資源庫資訊,才可以生成Da
php中cal_days_in_month不可用時的替代方法
在計算某個月中的天數時,由於PHP編譯時沒有加上--enable-calendar選項,會導致cal_days_in_month方法不可用。 這時,如果不能更改伺服器的編譯設定,可以通過以下方法實現該功能 $dayCount = date("t",strtotime("20
Keil 5(MDK 5)中的 Pack Installer下載不了包的解決替代方法(附安裝包網址)
想要使用keil自帶的Pack Installer安裝一些需要的軟體包,但是Pack Installer經常出現各種問題,導致安裝不了,比如: 其實我們可以先去網站把包下載下來,然後自己匯入就好了,算是勉強解決的辦法。步驟如下: 1、到keil的官網(keil包網頁)把包下載
SQL中的CASE使用方法
Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜尋函式 CASE WH
Python中使用.format方法替代格式化操作符%
Python中格式化字串的方式有: 格式化操作符%,基本語法:%[轉換標記][寬度[.精確度]]轉換型別,其中轉換標記和轉換型別詳見《Python基礎教程第2版》3.3節,《改善Python
jQuery1.9+中刪除了live以後的替代方法
根據jQuery的官方描述,live方法在1.7中已經不建議使用,在1.9中刪除了這個方法。並建議在以後的程式碼中使用on方法來替代。 on方法可以接受三個引數:事件名、觸發選擇器、事件函式。 需要特別注意的是:on方法中間的這個觸發選擇器就是你將要新增的HTML元素的
慎用option中的title屬性,及其替代方法
如下圖所示的多選框列表,要是滑鼠點選某個條例時,顯式該條例的詳細內容。 在頁面中加了一個div,當滑鼠移動時通過onmousemove="selMouseOver(this)",來設定並顯式div的值。 在IE6中沒有問題,滑鼠點選後,顯式條例的具體內容; IE7和8,當
SQL語句中的case when在access中的使用
select IIf(txtWidth=0,173,txtwidth) AS txtwidth,IIf(txtHeight=0,116,txtHeight) AS txtHeight from table
Android中getColor方法過時的替代方法
在Java程式碼中設定控制元件的Color時,通常這樣寫:txtLabel.setTextColor(getResources().getColor(R.color.black));但是getColor
SQL中Case的使用方法
Case具有兩種格式。簡單Case函式和Case搜尋函式。 --簡單Case函式 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END --Case搜
Android開發中Html.fromHtml(String source)方法過時的替代方法
前言 我們在開發中難免會遇到一個字串中有不同顏色的字型或者有不同大小的字型這樣的需求,所以可能會用到Html.fromHtml(String source) ,程式碼如下: String str2 = "今天<font color='#FF0000'&
thinkphp5中標籤動態替代方法
在thinkphp5中,官方文件並沒有說include可以使用變數來拼接路徑。例如:{include file='page/{$memuType}'/},網上看了一下方案,就是使用變數直接來解析,但是試了一下,變數是解析了,但是頁面上並不會真正引入你想引入的頁面,例如:{in
delphi中Case語法的使用方法
Case 語句 If...Then…Else 語句適合選項較少的情況,如果有很多選項的話利用If 語句就比較麻煩,在這種情況下,Case 語句就容易多了。Case 語句的語法如下: case <表示式> of <數值>:<語句>; &