SQL 使用数据处理函数

SQL 使用数据处理函数

一、函数:

  • 函数一般是在数据上执行的,为数据的转换和处理提供了方便。
1.1:函数带来的问题:
  • 事实上,只有少数几个函数被所有主要的DBMS等同地支持。虽然所有类型的函数一般都可以在每个DBMS中使用,但各个函数的名称和语法可能及其不同。

  • DBMS函数的差异:

    函数语法
    提取字符串的组成部分Access使用MID();DB2、Oracle、Post-greSQL和SQLite使用SUBSTR();MySQL和SQL Server使用SUBSTRING()
    数据类型转换Access和Oracle使用多个函数,每种类型的转换有一个函数;DB2和PostgreSQL使用CAST();MariaDB、MySQL和SQL Server使用CONVERT()
    取当前日期Access使用NOW();DB2和PostgreSQL使用CURRENT_DATE;MariaDB和MySQL使用CURDATE();Oracle使用SYSDATE;SQLServer使用GETDATE();SQLite使用DATE()
    • 可以看到,SQL语句不一样,SQL函数不是可移植的。这表示为特定的SQL实现编写的代码在其他实现中可能不正常。
  • 可移植:

    • 所编写的代码可以在多个系统上运行
    • 为了代码的可移植,许多SQL程序员不赞成使用特定于实现的功能。虽然这样做可以很有好处,但有的时候并不利于应用程序的性能
  • 是否应该使用函数?

    • `如果你使用函数,应该保证做好代码的注释,以便维护。

二、使用函数:

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

    1.用于处理文本字符串(如删除或填充值,转换值为大写或小写)的文本函数。

    2.用于在数值数据上进行算术操作(返回绝对值,进行代数运算)的数值函数。

    3.用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期之差,检查日期有效性)的日期和时间函数。

    4.返回DBMS正使用的特殊信息(如返回用户登录信息)的系统函数。

2.1:文本处理函数:
  • 使用UPPER()函数将文本转换成大写

    • 举个栗子:

      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.00 sec)
      
    • 可以看到,UPPER()将文本转换为了大写,可以从输出结果看,第一为vendors表中存储的值,第二次作为vend_name_upcase转换为大写。

  • 常用的文本处理函数

    函数说明
    LEFT() ( 或使用子字符串函数 )返回字符串左边的字符
    LENGTH() ( 也使用DATALENGTH() 或 LEN() )返回字符串的长度
    LOWER() ( Access使用 LCASE() )将字符转换为小写
    LTRIM()去掉字符串左边的空格
    RIGHT() (或使用子字符串函数)返回字符串后边的字符
    RTRIM()去掉字符串后边的空格
    SOUNDEX()返回字符串的SOUNDEX值
    UPPER()将字符串转换为大写
2.2:日期和时间处理函数:
  • 日期和时间采用相应的数据类型存储在表中,每种DBMS都有自己的特殊方式。

  • 日期和时间值以特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。

  • 应用程序一般不使用日期和时间的存储格式,因此日期和时间函数总是用来读取、统计和处理这些值。

    SELECT order_num FROM orders WHERE YEAR(order_date)=2012;
    
    • 输出结果如下:

      +-----------+
      | order_num |
      +-----------+
      |     20005 |
      |     20006 |
      |     20007 |
      |     20008 |
      |     20009 |
      +-----------+
      
  • 注意:举得栗子提取和使用日期的成分(年)。按月份过滤,可以进行相同的处理,指定AND操作符以及年和月份的比较。

2.3:数值处理函数:
  • 数值处理函数仅处理数值数据。

    • 这些函数一般主要用于代数、三角或几何运算。
  • 常用数值处理函数:

    函数说明
    ABS()返回一个数的绝对值
    COS()返回一个角度的余弦
    EXP()返回一个数的指数值
    PI()返回圆周率
    SIN()返回一个角度的正弦
    SQRT()返回一个数的平方根
    TAN()返回一个角度的正切
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值