使用数据处理函数

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

函数

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

大多数SQL实现的函数

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

    文本处理函数

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

  1. mysql> SELECT vend_name, UPPER(vend_name) AS
  2. -> vend_name_upcase
  3. -> FROM Vendors
  4. -> ORDER BY vend_name;
  5. +-----------------+------------------+
  6. | vend_name | vend_name_upcase |
  7. +-----------------+------------------+
  8. | Bear Emporium | BEAR EMPORIUM |
  9. | Bears R Us | BEARS R US |
  10. | Doll House Inc. | DOLL HOUSE INC. |
  11. | Fun and Games | FUN AND GAMES |
  12. | Furball Inc. | FURBALL INC. |
  13. | Jouets et ours | JOUETS ET OURS |
  14. +-----------------+------------------+
  15. 6 rows in set (0.01 sec)

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

常用处理文本函数

  • LENGTH() 返回串长度。

    1. mysql> SELECT vend_name, LENGTH(vend_name) AS vend_name_length
    2. -> FROM Vendors
    3. -> ORDER BY vend_name;
    4. +-----------------+------------------+
    5. | vend_name | vend_name_length |
    6. +-----------------+------------------+
    7. | Bear Emporium | 13 |
    8. | Bears R Us | 10 |
    9. | Doll House Inc. | 15 |
    10. | Fun and Games | 13 |
    11. | Furball Inc. | 12 |
    12. | Jouets et ours | 14 |
    13. +-----------------+------------------+
    14. 6 rows in set (0.01 sec)
  • LOWER() 转换小写

    1. mysql> SELECT vend_name, LOWER(vend_name)
    2. -> AS vend_name_lower
    3. -> FROM Vendors
    4. -> ORDER BY vend_name;
    5. +-----------------+-----------------+
    6. | vend_name | vend_name_lower |
    7. +-----------------+-----------------+
    8. | Bear Emporium | bear emporium |
    9. | Bears R Us | bears r us |
    10. | Doll House Inc. | doll house inc. |
    11. | Fun and Games | fun and games |
    12. | Furball Inc. | furball inc. |
    13. | Jouets et ours | jouets et ours |
    14. +-----------------+-----------------+
    15. 6 rows in set (0.00 sec)
  • 返回串中SOUNDEX值,意思是建任何文本串转为表述其语言表述的字母数字模式的算法。

    1. mysql> SELECT vend_name, SOUNDEX(vend_name)
    2. -> AS vend_name_soundex
    3. -> FROM Vendors
    4. -> ORDER BY vend_name;
    5. +-----------------+-------------------+
    6. | vend_name | vend_name_soundex |
    7. +-----------------+-------------------+
    8. | Bear Emporium | B65165 |
    9. | Bears R Us | B6262 |
    10. | Doll House Inc. | D4252 |
    11. | Fun and Games | F53252 |
    12. | Furball Inc. | F61452 |
    13. | Jouets et ours | J32362 |
    14. +-----------------+-------------------+

例子:

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

  1. mysql> SELECT cust_name, cust_contact
  2. -> FROM Customers
  3. -> WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');
  4. +------------+----------------+
  5. | cust_name | cust_contact |
  6. +------------+----------------+
  7. | Kids Place | Michelle Green |
  8. +------------+----------------+
  9. 1 row in set (0.03 sec)

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

日期和时间处理函数

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

更多的时间函数Date and Time Functions

原文: https://cxiaodian.gitbooks.io/mysql/content/chapter7.html