• 【SQL笔记】四、使用函数处理数据


    目录

    1.相关概念

    2.文本处理函数

    3.日期和时间处理函数

    4.数值处理函数

    5.测试题


    1.相关概念

            不同DBMS实现相同功能所用到的函数名称是不同的,如下表所示。

    大多数 SQL 实现支持以下类型的函数。

    • 用于处理文本字符串(如删除或填充值,转换值为大写或小写)的文本函数。
    • 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数。
    • 用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期之差,检查日期有效性)的日期和时间函数。
    • 用于生成美观好懂的输出内容的格式化函数(如用语言形式表达出日期,用货币符号和千分位表示金额)。
    • 返回 DBMS 正使用的特殊信息(如返回用户登录信息)的系统函数

    2.文本处理函数

    UPPER()函数,将文本转换为大写。

    1. SELECT vend_name, UPPER(vend_name) AS vend_name_upcase
    2. FROM Vendors
    3. ORDER BY vend_name;

    输出:

    1. vend_name vend_name_upcase
    2. --------------------------- ----------------------------
    3. Bear Emporium BEAR EMPORIUM
    4. Bears R Us BEARS R US
    5. Doll House Inc. DOLL HOUSE INC.
    6. Fun and Games FUN AND GAMES
    7. Furball Inc. FURBALL INC.
    8. Jouets et ours JOUETS ET OURS

    常用的文本处理函数,如下表所示

    :表中的SOUNDEX 是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX 考虑了类似的发音字符和音节,使得能对字符串进行发音比较而不是字母比较。

    例如:

    1. SELECT cust_name, cust_contact
    2. FROM Customers
    3. WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');

    输出:

    1. cust_name cust_contact
    2. -------------------------- ----------------------------
    3. Kids Place Michelle Green

            在上例中,WHERE子句使用 SOUNDEX() 函数把 cust_contact 列值和搜索字符串转换为它们的 SOUNDEX 值。因为 Michael Green 和 Michelle Green 发音相似,所以它们的 SOUNDEX 值匹配,因此 WHERE 子句正确地过滤出了所需的数据。

    3.日期和时间处理函数

            为在 Microsoft SQL Server 中检索 2020 年的所有订单,可如下进行:

    1. SELECT order_num
    2. FROM Orders
    3. WHERE DATEPART(yy, order_date) = 2020;

            其中,order_date是要提取数据的列,即要从order_date列提取年份(yy)数据,与2020做一个对比,如果等于2020则满足筛选条件。

    :Oracle、DB2,MySQL 和 MariaDB 的时间/日期处理函数都不相同。

    4.数值处理函数

            仅用于处理数值,这些函数一般主要用于代数、三角或几何运算,因此不像字符串或日期-时间处理函数使用那么频繁。

            在主要 DBMS 的函数中,数值函数是最一致、最统一的函数。下表列出一些常用的数值处理函数。

    5.测试题

    1.我们的商店已经上线了,正在创建顾客账户。所有用户都需要登录名,默认登录名是其名称和所在城市的组合。编写 SQL 语句,返回顾客 ID(cust_id)、顾客名称(customer_name)和登录名(user_login),其中登录名全部为大写字母,并由顾客联系人的前两个字符(cust_contact)和其所在城市的前三个字符(cust_city)组成。例如,我的登录名是 BEOAK(Ben Forta,居住在 Oak Park)。提示:需要使用函数、拼接和别名。

    1. -- DB2, PostgreSQL
    2. SELECT cust_id, cust_name,
    3. UPPER(LEFT(cust_contact, 2)) || UPPER(LEFT(cust_city, 3)) AS user_login
    4. FROM customers;
    5. -- SQL Server
    6. SELECT cust_id, cust_name,
    7. UPPER(LEFT(cust_contact, 2)) + UPPER(LEFT(cust_city, 3)) AS user_login
    8. FROM customers;

    2.编写 SQL 语句,返回 2020 年 1 月的所有订单的订单号(order_num)和订单日期(order_date),并按订单日期排序。你应该能够根据目前已学的知识来解决此问题,但也可以开卷查阅 DBMS 文档。

    1. -- DB2, MariaDB, MySQL
    2. SELECT order_num, order_date
    3. FROM Orders
    4. WHERE YEAR(order_date) = 2020 AND MONTH(order_date) = 1
    5. ORDER BY order_date;
    6. -- SQL Server
    7. SELECT order_num, order_date
    8. FROM Orders
    9. WHERE DATEPART(yy, order_date) = 2020 AND DATEPART(mm, order_date) = 1
    10. ORDER BY order_date;
  • 相关阅读:
    unity 使用小技巧(个人认为还算适用的)
    [pytorch笔记]02-主要组成模块&基础实战
    懒汉单例设计模式与饿汉单例设计模式
    精品基于Python房源爬虫实现数据可视化分析
    C盘清理攻略
    log4j.properties支持不同包日志分文件打印
    代码整洁之道-读书笔记之单元测试
    软件项目管理 8.4.软件项目质量计划
    『Halcon与C#混合编程』009_利用PictureBox实现窗体
    HBASE知识点
  • 原文地址:https://blog.csdn.net/duanduann/article/details/126014963