01. 函数
与其他大多数计算机语言一样,SQL支持利用函数来处理数据。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。
函数没有SQL的可移植性强: 能运行在多个系统上的代码称为可移植的(portable)。相对来说,多数SQL语句是可移植的,在SQL实现之间有差异时,这些差异通常不那么难处理。而函数的可移植性却不强,几乎每种主要的DBMS的实现都支持其他实现不支持的函数,而且有时差异还很大。
为了代码的可移植,许多SQL程序员不赞成使用特殊实现的功能。虽然这样做很有好处,但不总是利于应用程序的性能。如果不使用这些函数,编写某些应用程序代码会很艰难,必须利用其他方法来实现DBMS非常有效地完成的工作。如果你决定使用函数,应该保证做好代码注释,以便以后你(或其他人)能确切地知道所编写SQL代码的含义。
02. 使用函数
大多数SQL实现支持以下类型的函数:
用于处理文本串(如删除或填充值,转换值为大写或小写)的文本函数;
用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数;
用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差、检查日期有效性等)的日期和时间函数;
返回DBMS正使用的特殊信息(如返回用户登录信息、检查版本细节)的系统函数。
- 文本处理函数:
使用RTrim()函数来去除列值右边的空格;
1.1 使用Upper()函数将文本转换为大写:
1.2 常用的文本处理函数:
1.3 customers表中有一个顾客,其联系名为Y. Lee,但如果这是输入错误,此联系名实际应该是Y. Lie,怎么办?
1.4 SOUNDEX: 考虑了类似的发音字符和音节,使得能对串进行发音比较而不是字母比较;
- 日期和时间处理函数:
日期和时间采用相应的数据类型和特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。一般,应用程序不使用用来存储日期和时间的格式,因此日期和时间函数总是被用来读取、统计和处理这些值;
2.1 常用的日期和时间处理函数:
2.2 不管是插入或更新表值还是用WHERE子句进行过滤,日期必须为格式yyyy-mm-dd;
2.3 使用 WHERE order_date = ‘2005-09-01’ 可靠吗?order_date的数据类型为datetime,这种类型存储日期及时间值,比如:存储的order_date 值为*2005-09-01 11:30:05,则 WHERE order_date = '2005-09-01’失败;
2.4 必须使用Date()函数:
2.5 检索2005年9月下的所有订单:
- 数值处理函数:
数值处理函数仅处理数值数据,这些函数一般主要用于代数、三角或几何运算。