SQL必知会(二)-SQL查询篇(7)-使用函数处理数据

第8课、使用函数处理数据

表8-1 DBMS 函数的差异

函数 语法
提取字符串的组成 DB2、Oracle、PostgreSQL 和 SQLite 使用 SUBSTR();MariaDB、Mysql 和 SQL Server 使用 SUBSTRING()
数据类型转换 Oracle 使用多个函数,每种类型的转换有一个函数;DB2 和 PostgreSQL 使用CAST(); MariaDB、MySQL 和 SQL Server 使用 CONVERT()
取当前日期 DB2 和 PostgreSQL 使用 CURRENT_DATE;MariaDB 和 MySQL 使用 CURDATE();Oracle 使用 SYSDATE;SQL Server 使用 GETDATE();SQLite 使用 DATE()

缺点: 因为有些数据库使用 SQL 函数有差异,所以难以对 SQL 进行移植。

1)文本处理函数
UPPER() 函数:将文本转换为大写。

需求:把 vend_name 字段的值转换为大写,并且新值命名为 vend_name_upcase。

SELECT vend_name, UPPER(VEND_NAME) AS vend_name_upcase
FROM Vendors
ORDER BY vend_name;

输出结果:

SQL必知会(二)-SQL查询篇(7)-使用函数处理数据_第1张图片

表8-2 常用的文本处理函数

函数 说明
LEFT(或使用字符串函数) 返回字符串左边的字符
LENGTH()(也使用 DATLENGTH() 或 LEN()) 返回字符串的长度
LOWER() 将字符串转换为小写
LTRIM() 去掉字符串左边的空格
RIGHT() (或使用子字符串函数) 返回字符串右边的字符
RTRIM() 去掉字符串右边的空格
SUBSTR() 或 SUBSTRING() 提取字符串的组成部分
SOUNDEX() 返回字符串的 SOUNDEX 值
UPPER() 将字符串转换为大写
1.2)文本处理函数: SOUNDEX() 函数
使用 SOUNDEX() 函数:用来匹配与输入的文本有发音相似的文本串。(匹配文本的要素:发音字符和音节)

需求:Custmers 表中有一个顾客 Kids Place,其联系名为 Michelle Green。但是如果这是错误的输入,此联系名实际上应该是 Michael Green。

-- 不使用 SOUNDEX 函数:
SELECT cust_name, cust_contact
FROM Customers
Where cust_contact = 'Michael Green';
-- 由于数据库中没有 Michael Green,所以结果查询不到这个 Michael Green。

-- 使用 SOUNDEX 函数:
SELECT cust_name, cust_contact
FROM Customers
WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
-- 虽然数据库中没有 Michael,但是输出跟其发音相似的文本串 Michelle Green

输出结果:

SQL必知会(二)-SQL查询篇(7)-使用函数处理数据_第2张图片

2)日期和时间处理函数

需求:检索 2020 年的所有订单。

SELECT order_num
FROM Orders
WHERE DATEPART(yy, order_date) = 2020;

-- 使用 PostgreSQL:
SELECT order_num
FROM Orders
WHERE DATE_PART('year', order_date) = 2020;

-- 使用 Oracle:
SELECT order_num
FROM Orders
WHERE EXTRACT(year FROM order_date) = 2020;

-- 其他数据库的区别用法,以后需要时就了解一下,暂时不做这个笔记了。

输出结果:

SQL必知会(二)-SQL查询篇(7)-使用函数处理数据_第3张图片

数值处理函数

表8-3 常用数值处理函数

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

你可能感兴趣的:(数据库,sql,数据库)