程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL SERVER其它函數

SQL SERVER其它函數

編輯:關於SqlServer

本篇文章還是學習《程序員的SQL金典》內容的記錄,此次將講解的是SQL SERVER常用的其它函數。 (其它數據庫這裡就不羅列了,想看更多的可以關注《程序員的SQL金典》)。

具體的其他函數包括:類型轉換的函數、空值處理的函數、流程控制函數、SQL SERVER獨有函數。

類型轉換的函數

CAST ( expression AS data_type)函數         CONVERT ( data_type, expression)函數

上面兩個函數都是SQL SERVER提供的支持類型轉換的函數。參數expression為待進行類型轉換的表達 式(即需要待轉換的數據),而data_type為轉換的目標類型(即待轉換後的類型)。

SELECT
CAST('-30' AS INTEGER) as i,
CONVERT(DECIMAL,'3.1415726') as d,
CONVERT(DATETIME,'2008-08-08 08:09:10') as dt

空值處理的函數

COALESCE ( expression,value1,value2……,valuen)函數:處理空值問題的函數,返 回包括expression在內的所有參數中的第一個非空表達式。其中expression為待檢測的表達式,而其後 的參數個數不固定,可以多個。如果expression不為空值則返回expression;否則判斷value1是否為空 ,如果不為空值則返回value1;否則判斷value2是否為空,如果不為空值則返回value2; ……以此類推,如果COALESCE函數裡的參數全為NULL就會出錯了,因為COALESCE函數的功 能其實就是為了避免出現不想要的NULL值。

SELECT FName,FBirthDay,FRegDay,
COALESCE(FBirthDay,FRegDay,'2008-08-08') AS ImportDay
FROM T_Person

ISNULL(expression,value)函數:這個函數也是空值處理的函數,是COALESCE( )函數的簡化版,只 支持兩個參數。其中expression為待檢測的表達式,如果expression不為空值則返回expression,否則 判斷value是否為空,如果不為空值則返回value,如果都為空,則返回空。

SELECT FBirthDay,FRegDay,
ISNULL(FBirthDay,FRegDay) AS ImportDay
FROM T_Person

NULLIF ( expression1 , expression2 )函數:這個函數也是空值處理的函數,主要是判斷兩個表達 式是否等價,如果等價,則返回空,如果不等價,側返回第一個expression1的值。需要注意的意,第一 個表達式expression1不能為空。

SELECT FBirthDay,FRegDay,
NULLIF(FBirthDay,FRegDay)
FROM T_Person

流程控制函數

SQL SERVER提供了流程控制函數,類似於我們代碼裡面的的SWITCH……CASE語句。那就 是CASE函數,這個函數有如下兩種運用方法。

CASE函數的語法如下:

用法一:

CASE expression
WHEN value1 THEN returnvalue1
WHEN value2 THEN returnvalue2
WHEN value3 THEN returnvalue3
……
ELSE defaultreturnvalue
END

CASE函數對表達式expression進行測試,如果expression等於value1則返回returnvalue1,如果 expression等於value2則返回returnvalue2,expression等於value3則返回returnvalue3, ……以此類推,如果不符合所有的WHEN條件,則返回默認值defaultreturnvalue。

SELECT
FName,
(CASE FName
WHEN 'Tom' THEN 'GoodBoy'
WHEN 'Lily' THEN 'GoodGirl'
WHEN 'Sam' THEN 'BadBoy'
WHEN 'Kerry' THEN 'BadGirl'
ELSE 'Normal'
END) as isgood
FROM T_Person

用法二:

CASE
WHEN condition1 THEN returnvalue1
WHEN condition 2 THEN returnvalue2
WHEN condition 3 THEN returnvalue3
……
ELSE defaultreturnvalue
END

其中的condition1 、condition 2、condition 3……為條件表達式,CASE函數對各個 表達式從前向後進行測試,如果條件condition1為真則返回returnvalue1,否則如果條件condition2為 真則返回returnvalue2,否則如果條件condition3為真則返回returnvalue3,……以此類 推,如果不符合所有的WHEN條件,則返回默認值defaultreturnvalue。

SELECT
FName,
FWeight,
(CASE
WHEN FWeight<40 THEN 'thin'
WHEN FWeight>50 THEN 'fat'
ELSE 'ok'
END) as isnormal
FROM T_Person

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved