2012-11-07 49 views
0

我只想知道在VB.Net代碼中的SQL查詢中添加If/Else語句的最佳方式是什麼?提前如果/其他語句在VB.NET(SQL)查詢中?

SELECT 
    FIRSTNAME, LASTNAME 
FROM 
    TBL_USERS 
ORDER BY 
    If(SortSelect() Is ""lastname"", LASTNAME, FIRSTNAME) 

感謝:

這是我目前的查詢(不工作)。

+0

是否有錯誤? – Marc

回答

2

我對這個觀點是不要把IF的SQL語句。它太難閱讀了。可能是因爲它們都在同一條線上。

就你而言,只有一個,但是當你有很多條件時,幾乎不可能讀取。

你應該來聲明一個String爲您的病情是這樣

Dim strQuery as string 
Dim strOrderBy as string 

If(SortSelect() = "lastname") then 
    strOrderBy = "Order By lastname" 
Else 
    strOrderBy = "Order By firstname" 
endif 


strQuery = "SELECT FIRSTNAME, LASTNAME FROM TBL_USERS " & strOrderBy 
2

你可以嘗試這樣的事:

SELECT FIRSTNAME, LASTNAME 
FROM TBL_USERS 
ORDER BY Case when <SortSelect>= 'lastname' then LASTNAME else FIRSTNAME end 
+0

這適用於sql服務器 – deerchao

+0

'SortSelect()'看起來像一個VB函數......你如何在SQL字符串中使用它? – Andomar

+0

@Andomar:你是對的,我的意思是,他應該在VB.net中創建查詢,併爲SortSelect賦予適當的值並將其傳遞給數據庫 –

1
Dim sql as string = "SELECT FIRSTNAME, LASTNAME FROM TBL_USERS ORDER BY " 
if (SortSelect() = "lastname") 
    sql = sql & "lastname" 
else 
    sql = sql & "firstname" 
end if