码迷,mamicode.com
首页 > 数据库 > 详细

MySQL Crash Course #05# Chapter 9. 10. 11. 12 正则.函数. API

时间:2018-03-29 20:04:37      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:current   time   blog   designed   single   process   aggregate   result   more   

索引

 

Using MySQL Regular Expressions

默认大小写不敏感

mysql> SELECT 312HEWQKHD REGEXP [0-9];
+-----------------------------+
| 312HEWQKHD REGEXP [0-9] |
+-----------------------------+
|                           1 |
+-----------------------------+
1 row in set (0.00 sec)

mysql> SELECT HEWQKHD REGEXP [0-9];
+--------------------------+
| HEWQKHD REGEXP [0-9] |
+--------------------------+
|                        0 |
+--------------------------+
1 row in set (0.00 sec)

测试 正则表达式并不需要一张特定的表 ↑ REGEXP checks always return 0 (not a match) or 1 (match). 

正常而言,LIKE 能做的事情正则一定能做,正则能做的 LIKE 不一定能做(例如说 ‘ x | x ‘),效率上我倾向于正则比较慢(因为比较繁琐,匹配的东西多),但是实际情况还是要试了才知道。

 

Understanding Calculated Fields

ps. Fields 和 column 通常指一个东西

Rather than retrieve the data as it is and then reformat it within your client application or report, what you really want is to retrieve converted, calculated, or reformatted data directly from the database.

This is where calculated fields come in. Unlike all the columns we retrieved in the chapters thus far, calculated fields don‘t actually exist in database tables. Rather, a calculated field is created on-the-fly within a SQL SELECT statement.

Many of the conversions and reformatting that can be performed within SQL statements can also be performed directly in your client application. However, as a rule, it is far quicker to perform these operations on the database server than it is to perform them within the client because Database Management Systems (DBMS) are built to perform this type of processing quickly and efficiently.

/

In MySQL SELECT statements, you can concatenate columns using the Concat() function.

MySQL Is Different Most DBMSs use operators + or || for concatenation; MySQL uses the Concat() function. Keep this in mind when converting SQL statements to MySQL.

mysql> SELECT Concat(vend_name,  (, vend_country, ))
    -> FROM vendors
    -> ORDER BY vend_name;
+--------------------------------------------+
| Concat(vend_name,  (, vend_country, )) |
+--------------------------------------------+
| ACME (USA)                                 |
| Anvils R Us (USA)                          |
| Furball Inc. (USA)                         |
| Jet Set (England)                          |
| Jouets Et Ours (France)                    |
| LT Supplies (USA)                          |
+--------------------------------------------+
6 rows in set (0.00 sec)

/

SELECT Concat(RTrim(vend_name),  (, RTrim(vend_country), ))
FROM vendors
ORDER BY vend_name;

The trim() Functions In addition to RTrim() (which, as just seen, trims the right side of a string), MySQL supports the use of LTrim() (which trims the left side of a string), and trim() (which trims both the right and left).

/

Using Aliases

mysql> SELECT Concat(RTrim(vend_name),  (, RTrim(vend_country), )) AS
    -> vend_title
    -> FROM vendors
    -> ORDER BY vend_name;
+-------------------------+
| vend_title              |
+-------------------------+
| ACME (USA)              |
| Anvils R Us (USA)       |
| Furball Inc. (USA)      |
| Jet Set (England)       |
| Jouets Et Ours (France) |
| LT Supplies (USA)       |
+-------------------------+
6 rows in set (0.00 sec)

 /

SELECT prod_id,
       quantity,
       item_price,
       quantity*item_price AS expanded_price
FROM orderitems
WHERE order_num = 20005;

 

How to Test Calculations

SELECT provides a great way to test and experiment with functions and calculations. Although SELECT is usually used to retrieve data from a table, the FROM clause may be omitted to simply access and work with expressions. For example, SELECT 3 * 2; would return 6, SELECT Trim(‘ abc ‘); would return abc, and SELECT Now() uses the Now() function to return the current date and time. You get the ideause SELECT to experiment as needed.

 

Using Functions

  1. 在 MySQL 中自定义函数是允许的。
  2. 允许在 WHERE SELECT INSERT .各种地方使用函数。
  3. 存在类似 Soundex 的比较有趣的函数,以及例如 IF 的方便函数。

官方 API → MySQL 5.7 Reference Manual  /  Functions and Operators

mysql> SELECT cust_id, order_num, order_date
    -> FROM orders
    -> WHERE Date(order_date) = 2005-09-01;
+---------+-----------+---------------------+
| cust_id | order_num | order_date          |
+---------+-----------+---------------------+
|   10001 |     20005 | 2005-09-01 00:00:00 |
+---------+-----------+---------------------+
1 row in set (0.01 sec)
mysql> SELECT cust_id, order_num, order_date
    -> FROM orders
    -> WHERE Year(order_date) = 2005 AND Month(order_date) = 9;
+---------+-----------+---------------------+
| cust_id | order_num | order_date          |
+---------+-----------+---------------------+
|   10001 |     20005 | 2005-09-01 00:00:00 |
|   10003 |     20006 | 2005-09-12 00:00:00 |
|   10004 |     20007 | 2005-09-30 00:00:00 |
+---------+-----------+---------------------+
3 rows in set (0.00 sec)

在处理时间相关的问题时可能会比较有用。

 

Using Aggregate Functions

Aggregate Functions Functions that operate on a set of rows to calculate and return a single value.

mysql> SELECT COUNT(*) AS num_items,
    ->        MIN(prod_price) AS price_min,
    ->        MAX(prod_price) AS price_max,
    ->        AVG(DISTINCT prod_price) AS price_avg
    -> FROM products;
+-----------+-----------+-----------+-----------+
| num_items | price_min | price_max | price_avg |
+-----------+-----------+-----------+-----------+
|        14 |      2.50 |     55.00 | 17.780833 |
+-----------+-----------+-----------+-----------+
1 row in set (0.00 sec)

Aggregate functions are used to summarize data. MySQL supports a range of aggregate functions, all of which can be used in multiple ways to return just the results you need. These functions are designed to be highly efficient, and they usually return results far more quickly than you could calculate them yourself within your own client application.

MySQL Crash Course #05# Chapter 9. 10. 11. 12 正则.函数. API

标签:current   time   blog   designed   single   process   aggregate   result   more   

原文地址:https://www.cnblogs.com/xkxf/p/8665715.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!