MySQL必知必会-笔记-Part6

MySQL必知必会-笔记-Part6

Cha11、使用数据处理函数

MySQL中的函数

  • 与其他大多数计算机语言一样,SQL支持利用函数来处理数据。函数 一般是在数据上执行的,它给数据的转换和处理提供了方便
  • 之前提到的去除串尾空格的RTrim()就是一个函数的例子

11.2、使用函数

  • 大多数SQL实现支持以下类型的函数:
    • 用于处理文本串(删除/填充值,转换值的大小写)的文本函数
    • 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数
    • 用于处理日期等的日期和时间函数
    • 返回DBMS正使用的特殊信息的系统函数

文本处理函数

之前看到过一个例子,使用RTrim() 函数来去除列值右边的空格。

  • 使用Upper()函数

  • SELECT vend_name,Upper(bend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name;

  • image-20220803170452129

  • 正如所见,Upper()将文本转换为大写,因此本例子中每个供 应商都列出两次,

  • 第一次为vendors表中存储的值,第二次作 为列vend_name_upcase转换为大写

  • image-20220803170619753

  • image-20220803170628487

  • SOUNDEX:

  • SOUNDEX是一个将任何文 本串转换为描述其语音表示的字母数字模式的算法。

  • SOUNDEX考虑了类似 的发音字符和音节,使得能对串进行发音比较而不是字母比较。

  • image-20220803170657816

日期和时间处理哈桉树

  • 日期和时间采用相应的数据类型和特殊的格式存储
  • 以便能快速和有效地排序或过滤,并且节省物理存储空间
  • 一般,应用程序不使用用来存储日期和时间地格式
  • 因此日期和时 间函数总是被用来读取、统计和处理这些值
  • 由于这个原因,日期和时 间函数在MySQL语言中具有重要的作用

image-20220803171158320

  • 首先需要注意的是MySQL使用的日期格式。

  • 无论什么时候指定一个日期,不管是插入或更新表值还是用WHERE子句进行过滤,日期必须为 格式yyyy-mm-dd。

  • 因此,2005年9月1日,给出为2005-09-01。

  • 虽然其他的 日期格式可能也行,但这是首选的日期格式,因为它排除了多义性

  • SELECT cust_id,order_num,order_date FROM orders WHERE order_date = '2005-09-01';

  • image-20220803173230949

  • 此SELECT语句正常运行。它检索出一个订单记录,该订单记录 的order_date为2005-09-01

  • 但是,使用WHERE order_date = '2005-09-01’可靠吗?
  • ?order_ date的数据类型为datetime。这种类型存储日期及时间值。样例表中 的值全都具有时间值00:00:00,但实际中很可能并不总是这样。
  • 解决办法是指示MySQL仅将给出的日期与列中的日期部分进行比 较,而不是将给出的日期与整个列值进行比较。
  • 为此,必须使用Date() 函数。Date(order_date)指示MySQL仅提取列的日期部分
  • SELECT cust_id,order_num,order_date FROM orders WHERE Date(order_date)='2005-09-01';

  • image-20220803173352838

  • image-20220803173358886

  • 不过,还有一种日期比较需要说明。如果你想检索出2005年9月下的 所有订单,怎么办?简单的相等测试不行,因为它也要匹配月份中的天 数。

  • SELECT cust_id,order_num,order_date FROM orders WHERE Date(order_date) BETWEEN '2005-09-01' AND '2005-09-30';

  • image-20220803173509768

  • 其中,BETWEEN操作符用来把2005-09-01和2005-09-30定义为 一个要匹配的日期范围。

  • 还有另外一种办法(一种不需要记住每个月中有多少天或不需要操 心闰年2月的办法

  • SELECT cust_id,order_num FROM orders WHERE Year(order_date) = 2005 AND Month(order_date)=9;

  • image-20220803173616271

  • Year()是一个从日期(或日期时间)中返回年份的函数。

  • 类似, Month()从日期中返回月份。

  • 因此,WHERE Year(order_date)= 2005 AND Month(order_date) = 9检索出order_date为2005年9月的 所有行

数值处理函数

(order_date)= 2005 AND Month(order_date) = 9检索出order_date为2005年9月的 所有行

数值处理函数

image-20220803173706341

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值