使用函数处理数据

函数带来的问题

只有少数几个函数被主要的DBMS 等同支持,但有些各个数据库中函数名称与语法可能及其不同

  • SQL 函数不可移植

为了代码的可移植性,许多SQL程序员不赞成使用特定于实现的功能

不使用函数,有时候不利于程序性能,编写某些应用程序代码会很难

2. 函数的使用

2.1 文本处理函数(可移植)

常用的文本处理函数

函数 说明
LEFT()(或使用子字符串函数) 返回字符串左边的字符
LENGTH() 返回字符串长度
LOWER() 将字符串转换为小写
LTRIM() 去掉字符串左边的空格
RIGHT()(或使用子字符串函数) 返回字符串右边的字符
RTRIM() 去掉字符串右边的函数
SOUNDEX() 返回字符串的SOUNDEX值
UPPER() 将字符串转换为答谢

2.1.1 SOUNDEX()

SOUNDEX 是一个将任何文本串转换为描述其语音表示的字母数字模式的算法

SOUNDEX 考虑了类似的发音字符和音节,使得能够对字符串进行发音比较而不是字母比较

SELECT cust_name,cust_contact
FROM Customers
WHERE SOUNDEX(cust_contact)= SOUNDEX('michael Green')

2.2 日期与时间处理函数(不可移植/差)

日期和时间采用相同的数据类型存储在表中,每种DBMS 都有自己的特殊形式,日期和时间值以特殊格式存储,以便能快速和有效的排序或过滤,并且节省存储空间

用用程序一般不使用日期和时间的存储格式,因此日期和时间函数总是用来读取,统计和处理这些值

例:要检索2012年所有的订单

2.2.1 SQL Server

SELECT order_num
FROM Oders
WHERE DATEPART(yy,order_date) =2012;

2.2.2 ORACEL

ORACLE 没有DATEPART函数,要借助其他几个函数

SELECT order_num
FROM Oders
WHERE to_number (to_char(order_date,'YYYY'))=2012;

to_char() 函数用来提取日期的成分

to_number() 用来提取的成分转换为数值

2.2.3 Mysql和MariaDB

Mysql 具有各种日期处理函数

SELECT ordrr_num
FROM Orders
WHERE YEAR(order_date) = 2012;

2.3 数值处理函数()

函数 说明
ABS() 返回一个数的绝对值
COS() 返回一个角度的余弦
EXP() 返回一个数的指数值
PI() 返回周期率
SIN() 返回一个角度的正弦
SQRT() 返回一个数的平方根
TAN() 返回一个数的正切

results matching ""

    No results matching ""