昨天晚上買了一個sql的新書,特別的高興,晚上就閱讀了很多,突然發現以前經常在SQL中使用的case when的用法,以前在csdn上面看到好多,但是就是不知道怎麼用,可能那個時候還沒有用到的地方,不過現在就不一樣了,看過那短短的3頁紙之後,加強領悟了一個已經領悟的道理:書本還是要的,網路不可以解決所有的問題!
至於case when用在那裡,我在這裡只是用到了一小部分,一個是與否的問題;
:
以前的做法是在DataGrid_ItemDataBound事件裡面處理,
大概的做法是這樣寫的 1 Private Sub DataGrid1_ItemDataBound()Sub DataGrid1_ItemDataBound(ByVal sender As System.Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles Datagrid1.ItemDataBound
2 If (e.Item.ItemIndex <> -1) Then
3 ' e.Item.Cells(1).Text = System.Convert.ToString(e.Item.ItemIndex + 1 + DataGrid1.CurrentPageIndex * DataGrid1.PageSize)
4 If e.Item.Cells(5).Text.ToString = "False" Then
5 e.Item.Cells(5).Text = "沒有通過"
6 e.Item.BackColor = Color.LightSkyBlue
7
8 Else
9 If e.Item.Cells(5).Text = "True" Then
10 e.Item.Cells(5).Text = "已經通過"
11 End If
12 End If
13 End If
14 End Sub
超級麻煩,不過可以定義背景顏色,也很不錯
昨天看了case when的用法之後,才知道不要那麼麻煩了 1Select
2a.UserBorrowID,a.UserID,a.BookID,a.BorrowDate,b.UserName,c.Title ,a.GoOnDate,a.IsReturn,
3a.IsGoOn,
4a.ReturnDate,
5 case a.IsGoOn
6 when 1 then '是'
7 when 0 then '否'
8 END As IsGoOnBorrow,
9 case a.IsReturn
10 when 1 then '是'
11 when 0 then '否'
12 End as IsReturn1
13from Library_Borrows as a,Library_books as c,Library_Users as b
14where
15a.bookid=c.bookid and a.userid=b.UserID and a.UserID=@UserID
16ORDER BY a.ModifyDate DESC
^_^,建立一個預存程序,然後就不用再ItemBound裡面寫了。這樣就可以解決問題,當然還可以拓展開來,比如可以用case when 的搜尋形式進行變換字串 case when GoOndate<... then '通過' 這樣就可以減少在.vb中寫代碼了。
但是現在還不知道效能怎麼樣,因為我對測試效能是一無所知。