表达式函数

函数是您可以使用的存储的操作。 数据库管理系统提供基本函数,或者您可以创建自己的用户定义的函数。

生成表达式时可调用许多函数,包括:

  • 字符串(字符)函数。

  • 日期函数。

  • 数学函数。

  • 系统函数。

  • 其他函数,例如将数据从一种类型转换为另一种类型的函数。

  • 用户定义的函数。

一般情况下,如果对数据库中可用的函数熟悉,可以使用数据库支持的函数名和语法。 某些情况下,如创建视图、存储过程或触发器时,必须使用数据库特有的函数名和语法。

查询和视图设计器通过下列方式,帮助您使用函数:

  • 在函数参数中正确地插入引号。

  • 验证参数的数据类型。

  • 验证返回值的数据类型。

有关数据库所支持函数的详细信息,请参见数据库文档。

备注

可以使用特殊的函数集,如 SUM( ) 和 AVG( ) 这类聚合函数创建汇总数据的查询。有关详细信息,请参见 汇总查询结果

字符串函数

以下操作字符串的函数提供许多数据库中可用的函数的示例。

功能

说明

示例

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) }。

日期函数

以下函数(或与这些函数类似的其他函数)在许多数据库中可用。

功能

说明

示例

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( ) 在报表中创建平均值及合计值。

功能

说明

示例

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

将 title 和 price(上舍入到最接近的整数)从 titles 表复制到 archivetitle 表。

系统函数

大多数数据库都提供特殊的函数,可使用这些函数返回有关当前数据库、当前用户或服务器的信息。 以下函数是在许多数据库中可用的函数的典型示例。

功能

说明

示例

DATALENGTH( )

返回指定的表达式所用的字节数。

SELECT DATALENGTH(au_lname)
FROM authors

列出姓氏与名字所需的字节数。

USER( )*、USER_NAME( )

返回当前用户名。

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

为运行查询的销售人员创建客户列表。

其他函数

除上面列出的函数外,某些数据库还提供帮助您创建查询的其他函数,如数据类型转换函数或其他实用工具函数。 下列函数阐释许多数据库中可用的实用工具函数类型。

功能

说明

示例

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 列显示为单个字符串。

请参见

参考

表达式结构

概念

查询中的表达式

其他资源

使用参数查询