1、判空函數
說明:使用指定的替換值替換 NULL。
語法:ISNULL ( check_expression , replacement_value )
參數:
check_expression:將被檢查是否為 NULL 的表達式。check_expression 可以為任何類型。
replacement_value:當 check_expression 為 NULL 時要返回的表達式。replacement_value 必須是可以隱式轉換為 check_expresssion 類型的類型。
返回值:返回與 check_expression 相同的類型。
注釋:如果 check_expression 不為 NULL,則返回它的值;否則,在將 replacement_value 隱式轉換為 check_expression 的類型(如果這兩個類型不同)后,則返回前者。
實例:
加入int類型的Flag1為一,則用0代替它的值
ISNULL(Flag1,0) //加入int類型的Flag1為一,則用0代替它的值
注意:因為Flag1是整數(int)類型的,所以后面值肯定也要是int類型的,否則不能通過。因為假如一個數據為空,傳到頁面顯示的時候就會出現undefined,對於程序員來說,這是很正常的事情,很明確就知道它是一個空值,但對於普通用戶,undefined就很費解了,我們怎么樣才能在一個整形字段為空,用空字符串替代呢?用ISNULL肯定是不能解決的,不要着急,我們可以使用ISNULL、case when和conver函數進行解決。
2、case when
CASE WHEN的兩種格式
1.簡單Case函數
CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END
2.Case搜索函數
CASE WHEN sex = '1' THEN '男' WHEN sex = '2' THEN '女' ELSE '其他' END
1).兩者相比,Case搜索函數功能更強。
2).Case函數類似於if……else if 語句,只返回第一個符合條件的值,之后的部分會被忽略
3、convert函數
CONVERT() 函數是把日期轉換為新數據類型的通用函數。
CONVERT() 函數可以用不同的格式顯示日期/時間數據。
語法:
CONVERT(data_type(length),data_to_be_converted,style)
data_type(length) 規定目標數據類型(帶有可選的長度)。data_to_be_converted 含有需要轉換的值。style 規定日期/時間的輸出格式。
可以使用的 style 值:
Style ID | Style 格式 |
---|---|
100 或者 0 | mon dd yyyy hh:miAM (或者 PM) |
101 | mm/dd/yy |
102 | yy.mm.dd |
103 | dd/mm/yy |
104 | dd.mm.yy |
105 | dd-mm-yy |
106 | dd mon yy |
107 | Mon dd, yy |
108 | hh:mm:ss |
109 或者 9 | mon dd yyyy hh:mi:ss:mmmAM(或者 PM) |
110 | mm-dd-yy |
111 | yy/mm/dd |
112 | yymmdd |
113 或者 13 | dd mon yyyy hh:mm:ss:mmm(24h) |
114 | hh:mi:ss:mmm(24h) |
120 或者 20 | yyyy-mm-dd hh:mi:ss(24h) |
121 或者 21 | yyyy-mm-dd hh:mi:ss.mmm(24h) |
126 | yyyy-mm-ddThh:mm:ss.mmm(沒有空格) |
130 | dd mon yyyy hh:mi:ss:mmmAM |
131 | dd/mm/yy hh:mi:ss:mmmAM |
實例
下面的腳本使用 CONVERT() 函數來顯示不同的格式。我們將使用 GETDATE() 函數來獲得當前的日期/時間:
CONVERT(VARCHAR(19),GETDATE()) CONVERT(VARCHAR(10),GETDATE(),110) CONVERT(VARCHAR(11),GETDATE(),106) CONVERT(VARCHAR(24),GETDATE(),113)
結果類似:
Dec 29 2008 11:45 PM 12-29-2008 29 Dec 08 29 Dec 2008 16:25:46.635
CONVERT() 函數將一種類型的數據轉換為另外一種數據類型。
CONVERT(要轉換到的數據類型,字段名)
例子:將int類型的Flag1轉換為varchar(10)類型
convert(varchar(10),Flag1)
4、解決不同類型int類型為空時,用空字符串代替
1、假如它是空,就將其轉換為0
2、因為空字符串也是字符串,所以當Flag1不是為空的時候,還是需要將其轉換為字符串,所以無論Flag1是否為空,結果都是字符串,所以這樣子能運行
case when 0 = ISNULL(Flag1,0) then ' ' else convert(varchar(10),Flag1) end
自己想出來的,可能效率比較低,假如有更好的方法,希望賜教!