MySQL中的函数,看这一篇就够了

前面的章节讲述了一些基本的mysql select语法,有时我们不需要列值本身,而是需要变换格式或统计筛选后的结果,SQL支持一些计算字段和函数等来方便地应对这些情况。

一、计算字段

在select语句中创建计算字段并起别名来显示不实际存在的列。

1、拼接字段 Concat()函数

eg1: 从供应商表vendors中将供应商的名字vend_name和地区vend_city两列以一列 “供应商名(地区)” 的形式返回

SELECT CONCAT(vend_name, '(', vend_city, ')') FROM vendors

可以利用RTrim(), LTrim(), Trim()来删除列左/右的空格,整理数据格式。

2、算术计算

eg2: 返回订单中的商品数量和单价并汇总商品价格

SELECT order_item, quantity, item_price, quantity*item_price AS sum_price FROM orderitems WHERE order_num=20005 ORDER BY order_item

二、数据处理函数

1、文本处理(较常用)

Upper()/Lower()将文本转换为大/小写

Left()/Right()返回串左边/右边的字符

Length()返回串的长度

LTrim()/RTrim()删除左/右的空格

Locate()找出串的一个子串

SubString()找出子串的字符

Soundex()返回类似发音的值

2、日期和时间处理(常用)

注意日期格式尽量写为 yyyy-mm-dd,虽然其他日期格式MySQL也能处理,但是有时会产生歧义。

另外类型为datetime时,如列值为2019-09-17 21:45:30,则其不能与'2019-09-17'直接匹配,根据具体问题采用Date()等函数进行过滤才能得到想要的结果。

 eg3: 检索2005年9月的所有订单

SELECT order_num,cust_id,order_date FROM orders WHERE YEAR(order_date)=2005 AND MONTH(order_date)=9

3、数值处理(不常用)

三、聚集函数

用法较为简单就不一一举例了,说明一下每个函数使用的注意点。

1、平均值AVG()

用于确定特定数值列的平均值,参数为该列。

2、最大值MAX()

返回指定列的最大值,可以是数值,日期,文本等。忽略NULL。

3、最小值MIN()

返回指定列的最小值,可以是数值,日期,文本等。忽略NULL。

4、统计COUNT()

COUNT(*)用来返回所有行,包含NULL。

COUNT(column)返回特定列具有值的行,不包含NULL。

5、求和SUM()

用于返回指定列值的和。

eg4: SELECT SUM(quantity) AS sum_quantity FROM orderitems WHERE order_num=20005

用于合计计算结果。

eg5: SELECT SUM(quantity*item_price) AS sum_price FROM orderitems WHERE order_num=20005

6、聚集不同值DISTINCT

eg6: 和AVG()组合返回不同价格的平均值

SELECT AVG(DISTINCT prod_price) AS avg_price FROM products 与 SELECT AVG(prod_price) AS avg_price FROM products在有多个产品价格相同时结果不同。

eg7: 和COUNT()结合返回某指定列值不同的行数

SELECT COUNT(DISTINCT vend_id) FROM products 正确
SELECT COUNT(DISTINCT) FROM products 错误,distinct不能作用于 *

7、组合聚集函数

SELECT

COUNT(*) AS num_items,

MIN(prod_price) AS min_price,

MAX(prod_price) AS max_price

FROM products;

猜你喜欢

转载自www.cnblogs.com/july23333/p/11757395.html