函数带来的问题
函数可以很方便的解决数据处理中的各种问题,但是由于数据库种类繁多,几乎大部分函数的实现,都不相同。
1.使用函数
大部分数据库都支持以下类型的函数
- 用于处理文本字符串(如删除、填充值、转换值的大小写)的文本函数
- 用于在数值数据上进行算术运算操作(如返回绝对值、进行代数运算)的数值函数
- 用于处理日期和时间值并从这些值中提取特定成分(如返回两日期之差,检查日期有效性)的日期和时间函数
- 返回db正使用的特殊信息(如返回用户登录信息)的系统函数
1.1文本处理函数
转换大小写的函数UPPER(str)
SELECT title, UPPER(title) AS title_upper FROM blog_blogmodel;
常用文本处理函数
函数 | 说明 |
LEFT() (或使用子字符串函数) | 返回字符串左边的字符 |
LENGTH() (也可以使用DATALENGTH()或LEN()) | 返回字符串的长度 |
LOWER()(Access使用LCASE()) | 将字符串转为小写 |
LTRIM() | 去掉字符串左边的空格 |
RIGHT() | 返回字符串右边的字符 |
RTRIM() | 去掉字符串右边的空格 |
SOUNDEX() | 返回字符串右边的字符 |
UPPER()(Access使用UCASE()) | 将字符串转为大写 |
SOUNDEX是一个将任何字符串转换为描述其语音表示的字母数字模式的算法。Access和PostgreSQL数据库不支持该函数,多数SQLite也不支持(编译才可用)。
1.2 日期和时间处理函数
例子检索出2012年的所有订单
SQLServer
SELECT order_num FROM Orders WHERE DATEPART(yy, order_date) = 2012;
DATEPART()函数,只返回日期的某一部分。DATEPART()函数有2个参数,它们分别返回的成分和从中返回成分的日期。
PostgreSQL:
使用DATE_PART()
SELECT order_num FROM Orders WHERE DATE_PART(yy, order_date) = 2012;
Oracle没有 DATEPART函数,但有替代方法
SELECT order_num FROM Orders WHERE to_number(to_char(order_date, 'YYYY')) = 2012;
to_char提取日期的部分,to_number将提取的部分转为数值。
等同于以下语句
SELECT order_num FROM Orders WHERE order_date BETWEEN to_date('01-01-2012') AND to_date('12-31-2012');
MYSQL 和MariaDB
SELECT order_num FROM Orders WHERE YEAR(order_date) = 2012;
SQLite
SELECT order_num FROM Orders WHERE strftime('%Y', order_date) = 2012;
1.3数值处理
ABS() ---返回一个数的绝对值
COS() ---返回一个角度的余弦
EXP() ---返回一个数的指数值
PI() ---返回圆周率
SIN() ---返回一个角度的正弦
SQRT() ---返回一个数的平方根
TAN() ---返回一个角度的正切
评论列表
已有0条评论