函数
不同的DBMS中函数的作用和语法都有很大差异,SQL函数是不可移植的
函数可以用作SELECT语句的列表成分,也可以用作select其他子句的成分
文本处理函数
upper()函数可以用来将字符转化为大写
select vend_name, upper(vend_name) as vend_name_upcase
from Vendors
order by vend_name;
输出两列,一列为vend_name,另一列vend_name_upcase为大写的vend_name
常用文本处理函数
其中SOUNDEX函数可以把文本转化为其发音,可以用于筛选发音类似的文本及字符
比如某个表格把联系名Michael Green错输入为Michelle Green,如果按照Michael Green检索则不会返回数据
where cust_contact = 'Michael Green';
然而这两个名字发音类似,如果使用soundex()函数转化为发音
where soundex(cust_contact) = soundex('Micheal Green');
自动匹配所有发音类似Michael Green的联系名,就可以正确匹配出结果
日期和时间处理函数
日期和时间函数移植性最差,不懂DBMS的函数使用很不一样
检索2012年的所有订单
SQL Server:
select order_num
from Orders
where datepart(yy, order_data) = 2012;
Access:
select order_num
from Orders
where datepart('yyyy',order_date)=2012;
datepart()返回日期的一部分
Oracle:
没有datepart()函数
select order_num
from Orders
where to_number(to_char(order_date,'YYYY'))=2012;
to_char()函数提取年份并转化为字符串,to_number()函数转化为数字
to_date()函数将字符串转化为日期
也可以用between&and提取两个日期之间的所有订单
select order_num
from Orders
where order_date between to_date('01-01-2012') and to_date('12-31-2012');
mySQL:
用year()函数提取年份
select order_num
from Orders
where year(order_date)=2012;
数值处理函数
数值处理函数在不同的DBMS中是最统一的