SQL SERVER其它函數

來源:互聯網
上載者:User

本篇文章還是學習《程式員的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 expressionWHEN value1 THEN returnvalue1WHEN value2 THEN returnvalue2WHEN value3 THEN returnvalue3……ELSE defaultreturnvalueEND

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

SELECTFName,(CASE FNameWHEN 'Tom' THEN 'GoodBoy'WHEN 'Lily' THEN 'GoodGirl'WHEN 'Sam' THEN 'BadBoy'WHEN 'Kerry' THEN 'BadGirl'ELSE 'Normal'END) as isgoodFROM T_Person

用法二:

CASEWHEN condition1 THEN returnvalue1WHEN condition 2 THEN returnvalue2WHEN condition 3 THEN returnvalue3……ELSE defaultreturnvalueEND

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

SELECTFName,FWeight,(CASEWHEN FWeight<40 THEN 'thin'WHEN FWeight>50 THEN 'fat'ELSE 'ok'END) as isnormalFROM T_Person

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.