重学MYSQL之使用函数处理数据

数据库 2020-09-07 945

函数带来的问题

函数可以很方便的解决数据处理中的各种问题,但是由于数据库种类繁多,几乎大部分函数的实现,都不相同。

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条评论