使用数据处理函数

关于函数使用,与带来的问题。

函数

函数主要给数据提供处理与转换方便。

大多数SQL实现的函数

  • 用于处理文本串(删除,充值,大小写转换)
  • 用于在数值的数据上进行算术(返回绝对值,代数运算)操作。
  • 用于处理日期时间值并从这些值中提取特定成份。
  • 返回DBMS正使用的特殊信息(用户登录信息)。

文本处理函数

使用UPPER()函数来转换大小写。

mysql> SELECT vend_name, UPPER(vend_name) AS
    -> vend_name_upcase
    -> FROM Vendors
    -> ORDER BY vend_name;
+-----------------+------------------+
| 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   |
+-----------------+------------------+
6 rows in set (0.01 sec)

解释:vend_name 列出两次,一次储存值,一次将文本转换成大写。

常用处理文本函数

  • LENGTH() 返回串长度。
mysql> SELECT vend_name, LENGTH(vend_name) AS vend_name_length
    -> FROM Vendors
    -> ORDER BY vend_name;
+-----------------+------------------+
| vend_name       | vend_name_length |
+-----------------+------------------+
| Bear Emporium   |               13 |
| Bears R Us      |               10 |
| Doll House Inc. |               15 |
| Fun and Games   |               13 |
| Furball Inc.    |               12 |
| Jouets et ours  |               14 |
+-----------------+------------------+
6 rows in set (0.01 sec)
  • LOWER() 转换小写
mysql> SELECT vend_name, LOWER(vend_name)
    -> AS vend_name_lower
    -> FROM Vendors
    -> ORDER BY vend_name;
+-----------------+-----------------+
| vend_name       | vend_name_lower |
+-----------------+-----------------+
| 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  |
+-----------------+-----------------+
6 rows in set (0.00 sec)
  • 返回串中SOUNDEX值,意思是建任何文本串转为表述其语言表述的字母数字模式的算法。
mysql> SELECT vend_name, SOUNDEX(vend_name)
    -> AS vend_name_soundex
    -> FROM Vendors
    -> ORDER BY vend_name;
+-----------------+-------------------+
| vend_name       | vend_name_soundex |
+-----------------+-------------------+
| Bear Emporium   | B65165            |
| Bears R Us      | B6262             |
| Doll House Inc. | D4252             |
| Fun and Games   | F53252            |
| Furball Inc.    | F61452            |
| Jouets et ours  | J32362            |
+-----------------+-------------------+

例子:

Customers 表有一个名为Kids Place,顾客为Michael Green, 通过Michelle Green 类似发音来找到。

mysql> SELECT cust_name, cust_contact
    -> FROM Customers
    -> WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
+------------+----------------+
| cust_name  | cust_contact   |
+------------+----------------+
| Kids Place | Michelle Green |
+------------+----------------+
1 row in set (0.03 sec)

SOUNDEX() 函数转换 Michael Green,ichelle Green值,两个发音类似,所以能检索出来。

日期和时间处理函数

存储为特殊的数据类型,主要用于排序过滤。

更多的时间函数Date and Time Functions