Mysql从入门到入魔——4. 通配符、计算字段、函数
本篇主要内容
通配符的简单使用,字段的计算与拼接,介绍常用的文本处理函数、日期和时间处理函数,数值处理函数。如果对文中表结构不理解的可以查看系列首页。话不多说,进入正题!
1. 通配符过滤
通配符搜索只能用于文本字段(字符串),非文本数据类型字段不能使用通配符搜索。
在使用通配符过滤之前首先了解 MySQL
标准的 SQL
模式匹配 LIKE
或 NOT LIKE
操作符, 它用于在 WHERE
子句中搜索列中的指定模式或取值。
1.1 % 通配符
%
表示任何字符出现任意次数。例如,为了找出所有产品名称以 Fish
开头的产品
mysql> SELECT prod_id, prod_name
-> FROM Products
-> WHERE prod_name LIKE 'Fish%';
+---------+-------------------+
| prod_id | prod_name |
+---------+-------------------+
| BNBG01 | Fish bean bag toy |
+---------+-------------------+
1.2 _ 通配符
通配符 _
的用途与 %
一样也是匹配任意字符,但它只匹配单个字符,而不是多个字符。
mysql> SELECT prod_id, prod_name
-> FROM Products
-> WHERE prod_name LIKE '12 inch t_dd_ bear';
+---------+--------------------+
| prod_id | prod_name |
+---------+--------------------+
| BR02 | 12 inch teddy bear |
+---------+--------------------+
1.3 正则表达式匹配
与 SQL
标准的模式匹配的不同:
- 正规表达式匹配的是子串,只要目标字符串中有一部分符合模式(正则表达式),即匹配成功。
SQL
标准的模式匹配将匹配整个目标字符串,只有当目标字符串完全符合模式,才算匹配成功。 - 当我们想要用正则表达式像
SQL
标准模式一样只匹配整个目标字符串时,就需要用到^
字符来表示目标字符串的开头,$
字符表示目标字符串的结尾。
现在我们使用正则表达式,再次查询所有产品名称以 Fish
开头的产品。
mysql> SELECT prod_id, prod_name
-> FROM Products
-> WHERE prod_name REGEXP '^Fish.*$';
+---------+-------------------+
| prod_id | prod_name |
+---------+-------------------+
| BNBG01 | Fish bean bag toy |
+---------+-------------------+
关于正则表达式的使用,有不懂的可以在 这个网址 来学习,测验。
2. 创建计算字段
2.1 计算字段
存储在表中的数据都不是应用程序所需要的。我们需要直接从数据库中检索出转换、计算或格式化过的数据,而不是检索出数据,然后再在客户端应用程序中重新格式化。
2.2 拼接字段
下面将 vend_name
(供应商名), vend_country
(供应商国家)两列进行合并。并通过 AS
关键字进行给新列赋予别名。
mysql> SELECT Concat(vend_name, '(', vend_country, ')') AS new_column
-> FROM Vendors;
+------------------------+
| new_column |
+------------------------+
| Bear Emporium(USA) |
| Bears R Us(USA) |
| Doll House Inc.(USA) |
| Fun and Games(England) |
| Furball Inc.(USA) |
| Jouets et ours(France) |
+------------------------+
2.3 执行算数计算
通过 quantity
(物品数量)、 item_price
(物品价格)来计算 expanded_price
(总价)
mysql> SELECT quantity, item_price,
-> quantity * item_price AS expanded_price
-> FROM OrderItems
-> WHERE order_num = 20008;
+----------+------------+----------------+
| quantity | item_price | expanded_price |
+----------+------------+----------------+
| 5 | 4.99 | 24.95 |
| 5 | 11.99 | 59.95 |
| 10 | 3.49 | 34.90 |
| 10 | 3.49 | 34.90 |
| 10 | 3.49 | 34.90 |
+----------+------------+----------------+
3. 函数
3.1 常用文本处理函数
函数 | 说明 |
---|---|
LEFT(str, length) | 返回指定长度的字符串的左边部分 |
RIGHT(str, length) | 返回指定长度的字符串右边部分 |
LTRIM(str) | 去掉字符串左边的空格 |
RTRIM(str) | 去掉字符串右边的空格 |
LOWER(str) | 将字符串转换为小写 |
UPPER(str) | 将字符串转换为大写 |
LENGTH(str) | 返回字符串的长度 |
使用 UPPER()
将文本转换为大写。
mysql> SELECT vend_name, UPPER(vend_name) AS vend_name_upcase
-> FROM Vendors;
+-----------------+------------------+
| vend_name | vend_name_upcase |
+-----------------+------------------+
| Bear Emporium | BEAR EMPORIUM |
| Bears R Us | BEARS R US |
| Doll House Inc. | DOLL HOUSE INC. |
| Fun and Games | FUN AND GAMES |
| Furball Inc. | FURBALL INC. |
| Jouets et ours | JOUETS ET OURS |
+-----------------+------------------+
3.2 日期和时间处理函数
查询订单表 Orders
中所有日期为 2012
的订单号。
mysql> SELECT order_num
-> FROM Orders
-> WHERE YEAR(order_date)=2012;
+-----------+
| order_num |
+-----------+
| 20005 |
| 20006 |
| 20007 |
| 20008 |
| 20009 |
+-----------+
3.3 数值处理函数
函数 | 说明 |
---|---|
ABS() | 返回一个数的绝对值 |
COS() | 返回一个角度的余弦 |
SIN() | 返回一个角度的正弦 |
TAN() | 返回一个角度的正切 |
PI() | 返回圆周率 |
EXP() | 返回一个数的指数值 |
SQRT() | 返回一个数的平方根 |
以 ABS()
函数为例。
mysql> SELECT ABS(-1);
+---------+
| ABS(-1) |
+---------+
| 1 |
+---------+
这就是本文所有的内容了,如果感觉还不错的话。❤ 点个赞再走吧!!!❤
后续会继续分享《Mysql从入门到入魔》系列文章,如果感兴趣的话可以点个关注不迷路哦~。
- 点赞
- 收藏
- 关注作者
评论(0)