日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

access转sql iif_Access中IIF,SWITCH,CHOOSE的使用技巧

發布時間:2024/1/8 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 access转sql iif_Access中IIF,SWITCH,CHOOSE的使用技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Access數據庫中,很多SQL語句都是和sqlServer通用的。但是也有部分不能使用的函數兩者是不相通的。

例如:

SELECT UserPassportID as PassportID, UserID ?CaseObjectTypeID When1 thenObjectID

End as TerminalID, 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之類的代碼),使用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函數的語法如下: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可以滿足它的所有功能,而且更靈活,邏輯更清晰。

SELECT code,SWITCH(

mid(code,1,len(code)-2) = '',?? '0',

True,mid(code,1,len(code)-2)

) AS pcode

FROM?? wz_cl order by code

總結

以上是生活随笔為你收集整理的access转sql iif_Access中IIF,SWITCH,CHOOSE的使用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。