MySQL数据库学习笔记(五)----MySQL字符串函数、日期时间函数

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

一、常见字符串函数:

  • 1、CHAR_LENGTH  获取长度(字符为单位)
  • 2、FORMAT  格式化
  • 3、INSERT  替换的方式插入
  • 4、INSTR  获取位置
  • 5、LEFT/RIGHT  取左、取右
  • 6、LENGTH   获取长度(字节为单位)
  • 7、LTRIM/RTRIM/TRIM 去空格(左/右/自定义)
  • 8、STRCMP  字符串比较
  • 9、CONCAT  字符串拼接
  • 10、SUBSTRING  字符串截取

1、CHAR_LENGTH:获取长度(字符为单位)

CHAR_LENGTH(str)

解释:返回值为字符串str的长度,计算的单位为字符(一个中文也算一个字符)

举例:

如果是查询已知表格里的字段长度,可以这样写:

2、FORMAT

FORMAT(X,D)

解释:将数字X的格式写为'#,###,###.##',以四舍五入的方式保留小数点后D位,并将结果以字符串的形式返回。若D为0, 则返回结果不带有小数点,或不含小数部分。

举例:

3、INSERT:替换的方式插入

INSERT (str,pos,len,newstr)

解释:返回字符串str,从原str的pos位置开始,用字符串newstr来替换,替换的长度为len。

如果pos超过字符串长度,则返回值为原始字符串。假如len的长度超过后面字符串的长度,则从位置pos开始替换到字符串的结尾即可。

四个参数中若任何一个参数为的值为null,则整个函数的返回值为NULL。

举例:将smyh001替换为smyh002

4、INSTR:查找子字符串的位置

INSTR(str,substr)

解释:返回字符串str中首次出现子字符串substr的位置。

举例:

5、LEFT/RIGHT:字符串截取

  • 左截取:
LEFT(str,len)

解释:返回字符串str中,从左边开始算起的,前len个字符。

  • 右截取:
RIGHT(str,len)

解释:返回字符串str中,从右边开始算起的,前len个字符。

6、LENGTH:求字符串长度(以字节为单位)

LENGTH(str)

解释:返回值为字符串str的长度,单位为字节。一个多字节字符算作多字节。这意味着对于一个包含五个2字节字符的字符串,LENGTH()的返回值为10,而CHAR_LENGTH()的返回值则为5。

注:

  • GBK  编码中,一个中文字符是2个字节。
  • UTF-8编码中,一个中文字符是3个字节,一个英文字符是2个字节。

7、LTRIM/RTRIM/TRIM 去空格(左/右/自定义):

  • 去掉左边的空格:
LTRIM(str)

解释:返回字符串str,其引导空格字符被删除。

  • 去掉中间的空格:
RTRIM(str)

解释:返回字符串str,其结尾空格字符被删除。

  • 自定义去空格:
TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) 

注:大括号和中括号里面的参数为可选项,如果全部都加上的话,默认为参数both。

解释:将原字符串str去掉空格返回。只去开头(leading)的空格,只去结尾(trailng)的空格,或者同时去掉(both)开头和结尾的空格都行。若分类符BOTH、LEADIN或TRAILING中没有一个是给定的,则假设为BOTH。

TRIM([remstr FROM] str)

解释:remstr关键字的作用是去掉指定字符。 即所有包含remstr的前缀和/或后缀将被删除。未指定情况下,即删除空格。

官方文档的举例:

8、STRCMP判断字符串是否相等

STRCMP(expr1,expr2)

解释:判断两个字符串是否相等。若所有的字符串均相同,则返回0;若根据当前分类次序,第一个参数小于第二个,则返回-1;其它情况返回1。功能和比较器类似。

注:字符串的大小是按照ANSI编码来比较的。

举例:

9、CONCAT:字符串拼接

CONCAT(str1,str2,...)

解释:返回结果为连将str1、str2···拼接之后产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。括号里可能有一个或多个参数。 

如果所有参数均为非二进制字符串,则结果为非二进制字符串。如果自变量中含有任意一个二进制字符串,则结果为一个二进制字符串。一个数字参数将自动转化为与之相等的二进制字符串格式。

若要避免这种情况二进制的情况出现,可使用显式类型 cast(str),将二进制的字符串转换为非二进制字符串。例如:SELECT CONCAT(CAST(int_col AS CHAR), char_col)

举例:(navicat编辑器会自动将二进制字符串转换为非二进制字符串)

10、SUBSTRING字符串截取

SUBSTRING(str,pos)
SUBSTRING(str FROM pos)
SUBSTRING(str,pos,len)
SUBSTRING(str FROM pos FOR len) 

解释:不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。

使用FROM的格式为标准SQL语法。

也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos字符(也就是说,pos为正时,从左边算起;pos为负时,从右边算起)。 

官方文档举例如下:

 

二、常见日期时间函数:

  • 1、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH
  • 2、WEEKDAY
  • 3、YEAR、QUARTER、MONTH、
  • 4、HOUR、MINUTE、SECOND
  • 5、TO DAYS、FROM DAYS    
  • 6、CURDATE、CURTIME、NOW   获取当前时间

1、DAYOFWEEK、 DAYOFYEAR、DAYOFMONTH

  • 求星期几:(一周中的第几天) 
DAYOFWEEK(date)

解释:返回date(1=周日,2=周一, ...,7=周六)对应的工作日索引。即:date对应的范围是1至7

  • 求一年中的某天是第几天:(一年中的第几天)
DAYOFYEAR(date)

返回date对应的一年中的天数,范围是从1到366。

  • 求一个月中的某天是第几天:(一个月的第几天)
DAYOFMONTH(date)

返回date对应的该月日期,范围是从1到31。注:DAY(date) 和DAYOFMONTH(date)的含义相同。

举例:

2、WEEKDAY

  • 求星期几:(一周的第几天)
WEEKDAY(date)

解释:返回date(0 = 周一, 1 = 周二, ... 6 = 周日)对应的工作日索引。即:date对应的范围是0至6

注:DAYOFWEEK(date)和WEEKDAY(date)的功能相同,唯一的区别在于date对应的取值范围。

3、 YEAR、QUARTER、MONTH

  • 求年份:
YEAR(date)

解释:返回date对应的年份,范围是从1000到9999。

  • 求季度:
QUARTER(date)

解释:返回date对应的一年中的季度值,范围是从1到4。

  • 求月份:(该月是一年当中的第几个月)
MONTH(date) 

解释:返回date 对应的月份,范围是从1到12。

举例:

4、HOUR、MINUTE、SECOND

  • 求小时:
HOUR(time)

解释:返回time 对应的小时数。对于日时值的返回值范围是从0到23 。

  • 求分钟:
MINUTE(time)

解释:返回time对应的分钟数,范围是从0到59。

  • 求秒数:
SECOND(time)

解释:返回time对应的秒数,范围是从0到59。

举例:

5、TO_DAYS、FROM_DAYS

  • 求某日期,一共经历了多少天:(历史长河中)
TO_DAYS(date)

解释:给定一个日期date, 返回一个天数 (从年份0开始的天数 )。

  • 求历史长河中的第某天,的日期:
FROM_DAYS(N)

解释:给定一个天数 N, 返回一个DATE值。

使用FROM_DAYS()处理古老日期时,务必谨慎,他不用于处理阳历出现前的天数(1582)。

6、CURDATE、CURTIME、NOW

  • 求当前的年月日:
CURDATE()

解释:将当前日期按照'YYYY-MM-DD'或YYYYMMDD格式的值返回,具体格式根据函数用在字符串或是数字语境中而定。

举例:

  • 求当前的时分秒:
CURTIME()

解释:将当前时间以'HH:MM:SS'或HHMMSS的格式返回,具体格式根据函数用在字符串或是数字语境中而定。

举例:

  • 求当前的年月日、时分秒:
NOW()

举例:

注:如果now是放在语句当中,要看具体字段的格式要求。比如说,如果是放在date字段中,则只显示年月日;如果是放在datetime字段中,则同时显示年月日和时分秒。

 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
6月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS费用价格:MySQL、SQL Server、PostgreSQL和MariaDB引擎收费标准
阿里云RDS数据库支持MySQL、SQL Server、PostgreSQL、MariaDB,多种引擎优惠上线!MySQL倚天版88元/年,SQL Server 2核4G仅299元/年,PostgreSQL 227元/年起。高可用、可弹性伸缩,安全稳定。详情见官网活动页。
|
2月前
|
关系型数据库 分布式数据库 数据库
阿里云数据库收费价格:MySQL、PostgreSQL、SQL Server和MariaDB引擎费用整理
阿里云数据库提供多种类型,包括关系型与NoSQL,主流如PolarDB、RDS MySQL/PostgreSQL、Redis等。价格低至21元/月起,支持按需付费与优惠套餐,适用于各类应用场景。
|
2月前
|
SQL 关系型数据库 MySQL
Mysql数据恢复—Mysql数据库delete删除后数据恢复案例
本地服务器,操作系统为windows server。服务器上部署mysql单实例,innodb引擎,独立表空间。未进行数据库备份,未开启binlog。 人为误操作使用Delete命令删除数据时未添加where子句,导致全表数据被删除。删除后未对该表进行任何操作。需要恢复误删除的数据。 在本案例中的mysql数据库未进行备份,也未开启binlog日志,无法直接还原数据库。
|
2月前
|
关系型数据库 MySQL 数据库
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎
阿里云数据库RDS支持MySQL、SQL Server、PostgreSQL和MariaDB引擎,提供高性价比、稳定安全的云数据库服务,适用于多种行业与业务场景。
|
7月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
7月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
2月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
112 3
|
2月前
|
关系型数据库 MySQL 数据库
自建数据库如何迁移至RDS MySQL实例
数据库迁移是一项复杂且耗时的工程,需考虑数据安全、完整性及业务中断影响。使用阿里云数据传输服务DTS,可快速、平滑完成迁移任务,将应用停机时间降至分钟级。您还可通过全量备份自建数据库并恢复至RDS MySQL实例,实现间接迁移上云。
|
3月前
|
存储 运维 关系型数据库
从MySQL到云数据库,数据库迁移真的有必要吗?
本文探讨了企业在业务增长背景下,是否应从 MySQL 迁移至云数据库的决策问题。分析了 MySQL 的优势与瓶颈,对比了云数据库在存储计算分离、自动化运维、多负载支持等方面的优势,并提出判断迁移必要性的五个关键问题及实施路径,帮助企业理性决策并落地迁移方案。

热门文章

最新文章

推荐镜像

更多