共用方式為


運算式的函式

函式是您可以使用的預存作業。 資料庫管理系統提供基本函式,您也可以建立自己的使用者定義函式。

建置運算式時可以呼叫許多的函式,包括:

  • 字串 (字元) 函式。

  • 日期函式。

  • 數學函式。

  • 系統函式。

  • 其他函式,例如轉換資料之資料型別的函式。

  • 使用者定義函式。

大體而言,如果您很熟悉您的資料庫中可以使用的函式,可以使用資料庫支援的函式名稱和語法。 有時候,例如建立檢視、預存程序或觸發程序時,必須使用資料庫特定的函式名稱和語法。

查詢和檢視表設計工具提供下列功能,協助您處理函式:

  • 在函式引數中正確地插入引號。

  • 驗證引數的資料型別。

  • 驗證傳回值的資料型別。

如需資料庫支援之函式的詳細資訊,請參閱資料庫的文件

注意事項注意事項

您可以使用特殊的函式集,例如 SUM( ) 和 AVG( ) 等彙總函式 (Aggregate Function),建立摘要資料的查詢。如需詳細資訊,請參閱摘要查詢結果

字串函式

下列用於管理字元字串的函式,提供在許多資料庫中可用之函式的範例。

Function

描述

範例

LCASE( )*、LOWER( )

將字串轉換為小寫。

若要讓第一個字元變成大寫,請使用:

  • SELECT UPPER(substring(lname, 1, 1))

若要將其餘的字元轉換為小寫,請使用:

  • LOWER(substring (lname, 2, 99))

FROM employee

將第一個字元轉換為大寫且其餘字元轉換為小寫後,顯示姓氏。

LTRIM( )

移除字串的前置空格。

SELECT stor_name, LTRIM(stor_address)
FROM stores

將前面無關的空格移除後,顯示地址資料行。

SUBSTRING( )

從字串中擷取一個或多個字元。

SELECT SUBSTRING(phone,1,3)
FROM employee

顯示電話號碼的前三個字元 (區碼)。

UCASE( )*、UPPER( )

將字串轉換為大寫。

SELECT * FROM employee
WHERE UPPER(lname) = 'SMITH'

先將 lname 資料行的內容轉換為大寫,然後再與特定值比較,可避免在區分大小寫的搜尋時發生不符合的情形。

如果呼叫做為 ODBC 函式,請使用下列語法:{ fn LCASE(text) }。

日期函式

下列函式 (或其他類似的函式) 可在許多資料庫中使用。

Function

描述

範例

DATEDIFF( )

計算兩個日期間的間隔。

SELECT fname, lname, hire_date
FROM employee
WHERE DATEDIFF(year, hire_date, getdate()) > 5

找出年資五年以上的員工。

DATEPART( )

傳回日期或日期時間資料行的指定部分,包括天、月或年。

SELECT DATEPART(year, hire_date)
FROM employee

只顯示員工的年資 (不是完整的日期)。

CURDATE( )*、GETDATE( ) 或 DATE( )

以日期時間格式傳回目前的日期。 此函式可以做為其他日期函式的輸入,例如從今天往前或往後計算間隔。

SELECT order_id
FROM orders
WHERE order_date = GETDATE()
Displays orders placed today.

數學函式

大多數的資料庫提供可在執行計算時使用的一些數學函式。 下列函式是許多資料庫中一般可用的函式。

注意事項注意事項

您可以使用彙總函式 AVG( )、COUNT( )、MAX( )、MIN( ) 及 SUM() 在報告中建立平均和總計。

Function

描述

範例

ROUND( )

將數字四捨五入到指定的小數位數

SELECT ROUND(qty * (price * discount), 2)
FROM sales

根據折扣顯示總價,然後將結果四捨五入至小數點後兩位。

FLOOR( )

將數字無條件向下捨去至最近 (最小) 的整數

UPDATE titles
SET price = FLOOR(price)

將 titles 資料表的所有價格向下捨去至最近的整數。

CEILING( )

將數字無條件向上進位到最近的整數

INSERT INTO archivetitle
SELECT title, CEILING(price)
FROM titles

將 titles 資料表的 title 和 price (向上進位到最近的整數) 複製到 archivetitle 資料表。

系統函式

大多數的資料庫都提供特殊的函式,讓您用於傳回目前資料庫、目前使用者或伺服器的資訊。 下列函式是許多資料庫中一般可用的函式。

Function

描述

範例

DATALENGTH( )

傳回指定運算式使用的位元組數目。

SELECT DATALENGTH(au_lname)
FROM authors

列出姓氏和名字所需的位元組數目。

USER( )*、 USER_NAME( )

傳回目前使用者的名字。

SELECT company_name, city, phone
FROM customers
WHERE salesperson = USER_NAME()

為執行查詢的業務員建立一份客戶清單。

其他函式

除了前面列出的函式以外,某些資料庫還提供其他函式以協助您建立查詢,例如資料型別轉換或其他公用程式函式。 下列函式說明了許多資料庫都提供的公用程式函式型別。

Function

描述

範例

CONVERT( )

轉換資料的資料型別。 適用於格式化資料,或者在需要不同資料型別的函式中使用某個資料行的內容做為引數。

SELECT 'Hired: ' + CONVERT(char (11),
  hire_date)
FROM employee

顯示日期,前面加上標題,CONVERT( ) 函式會利用日期建立字串,以便和常值字串連結。

SOUNDEX( )

傳回指定運算式的 Soundex 碼,可用於建立「相似音」的搜尋。

SELECT au_lname, au_fname
FROM authors
WHERE SOUNDEX(au_fname) = 'M240'

搜尋發音類似 "Michael" 的名字。

STR( )

將數字資料轉換為字元字串,如此可用文字運算子來處理。

SELECT str(job_id)
FROM employee

將 job_id 資料行顯示為單一字串。

請參閱

參考

運算式的結構

概念

在查詢中使用運算式

其他資源

使用參數查詢