函数:每个DBMS都有特定的函数。
举例说明:DBMS函数的差异
函数 | 语法 |
提取串的组中部分 数据类型转换 | Access使用MID(); DB2、Oracle和PostgreSQL使用:SUBSTR(); MySQL,SQL Server和Sybase使用SUBSTRING() Access和Oracle使用多个函数,每种类型的转换都有一个函数; DB2和PostgreSQL使用CAST(): MySQL、SQL Server和Sybase使用CONVERT() |
常用文本处理函数:
函 数 | 说明 |
LEFT()(或使用子字符串函数) | 返回串左边的字符 |
LENGTH()(也使用DATALENGTH()或LEN() | 返回串的长度 |
LOWER()(Access使用LCASE()) | 将串转换为小写 |
LTRIM() | 去掉串左边的空格 |
RIGHT()(或使用子字符串函数) | 返回串右边的字符 |
RTRIM() | 去掉串右边的空格 |
SOUNDEX()(Access和PostgreSQL不支持) | 返回串的SOUNDEX值 |
UPPER()(Access使用UCASE()) | 将串转换为大写 |
日期和时间处理函数:
日期和时间值采用相应的数据类型存储在表中,每种DBMS都有自己的变体;日期和时间值 以特殊的格式存储,以便能够快速和有效地排序或过滤并节省存储空间。不幸的是,它们很不一致,可移植性最差。
SQL Server和Sybase及Access版本使用的DATEPART(),有两个参数,它们分别是返回的成分和从中返回成分的日期。
SQL Server和Sybase版本:
SELECT order_num
FROM orders
WHERE DATEPART(yy,order_date)=2004
ACCESS版本:
SELECT order_num
FROM orders
WHERE DATEPART(‘yyyy’,order_date)=2004
PostgreSQL使用:DATE_PART()
SELECT order_num
FROM orders
WHERE DATE_PART(‘year’,order_date)=2004
MYSQL具有各种日期处理函数:
YEAR()从日期中提取年份:
SELECT order_num
FROM orders
WHERE YEAR(order_date)=2004
Oracle:
SELECT order_num
FROM orders
WHERE to_number(to_char(order_date,’yy’))=2004
数值处理函数:
数值函数是主要DBMS的函数中最一致最统一的函数。常用的数值处理函数如下:
函数 | 说明 |
ABS() | 返回一个数的绝对值 |
COS() | 返回一个角度的余弦 |
EXP() | 返回一个数的指数值 |
PI() | 返回圆周率 |
SIN() | 返回一个角度的正弦 |
SQRT() | 返回一个数的平方根 |
TAN() | 返回一个角度的正切 |