MySQL数据库查询——内置函数

本文详细介绍了MySQL数据库中的各种内置函数,包括单行函数如字符串函数、数值函数、日期函数、转换函数和其他函数,以及多行函数如平均值、最大值、最小值和求和等统计函数。通过实例展示了如何使用这些函数进行数据查询和处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、单行函数

1、字符串函数

  • length(column_name|str)
    返回字符串存储长度,参数列表内为列名或直接是字符串
select length(name) from student

  查询结果:查出name列中各条信息的字符串存储长度

  • char_length(column_name|str)
    返回字符串字符个数,参数列表内为列名或直接是字符串
select length(name) from student

  查询结果:查出name列中各条信息的字符串中字符个数

  • concat(column_name1|str1, column_name2|str2,…)
    将多个字符串首尾相连后返回,参数列表内为列名或直接是字符串
select concat(id,name,sex) from student

  查询结果:将id列,name列,sex列中信息首尾相连返回在同一列中

  • concat_ws(separator,column_name1|str1, column_name2|str2,…)
    将多个字符串以separator为间隔相连,separator为自己设置的间隔符号,之后的参数为列名或直接是字符串
select concat_ws(",",id,name,sex) from student

  查询结果:将id列,name列,sex列中信息以","为间隔连接,返回在同一列中

  • trim([{both | leading | trailing} [remstr] from] str)
    返回去掉str源字符串两端、前缀或后缀字符串。其中both,leading,trailing分别代表两端,前缀,后缀。remstr为要去掉的字符,若不指定remstr则默认为空格,str为待操作字符串。
select trim('  Tom  ') from dual;
#执行结果字符串变为Tom
select trim(both 'a' from 'aaaTomaaa');
#执行结果字符串变为Tom
select trim(leading 'a' from 'aaaTom');
#执行结果字符串变为Tom
select trim(trailing 'abc' from 'Tomabc');
  • substr(str,pos,len)
    从源字符串str中的指定位置pos开始取len长度字串并返回,len缺省时一直取到字符串的末尾
select substr('beijing','3','2') from dual

  查询结果:返回字符串ij

  • replace(str, from_str, to_str)
    将源字符串str中所有子串form_str(大小写敏感替)代成字符串to_str并返回替换后的字符串。
select replace('prefix.mysql.com','prefix','www');

  查询结果:返回字符串 www.mysql.com

  • reverse(str)
    返回字符串str反转结果
  select reverse('123456');

  查询结果:返回字符串654321

  • strcmp(expr1,expr2)
    两个字符串相同则返回0;第一个小于第二个返回-1,否则返回1;
select strcmp(10,11) from dual
select strcmp(11,11) from dual
select strcmp(11,10) from dual

  查询结果:分别返回-1,0,1
2、数值函数

  • mod(x,y)
    取x/y的余数
select mod(2,3) from dual

  查询结果:返回2

  • round(x,y)
    返回参数x的四舍五入值,该值有y位小数,y缺省时为0。
select round(4.516,2),round(4.168,1),round(4.168)from dual

  查询结果:返回3列,结果分别为4.52,4.2,4

  • truncate(x,y)
    返回数字x截断后的结果,该值有y位小数
select truncate(1.58,0),truncate(1.298,1)

  查询结果:返回2列,结果分别为1,1.2
3、日期函数

  • now()
    获得当前日期+时间
select now()

  查询结果:2019-05-10 15:38:54

  • date_format(date,format)
    获取指定格式的日期
select date_format(now(),'%Y-%m-%d-%h-%i-%s')

  查询结果:2019-05-10-03-40-11

  • datediff(date1,date2)
    返回(date1减date2)天
select datediff(now(),'2018-1-1')

  查询结果:494

  • timediff(time1,time2)
    返回time1-time2,且函数的两个参数类型必须相同
select timediff(now(),'2019-05-10 00:00:00')

  查询结果:15:44:04
4、转换函数

  • convert(value,type)
    将value转换为type类型,type可以是char(字符型)、date(日期型)、time(时间型)、datetime(日期时间型)、 signed(整型) 和decimal(浮点型)类型中的一个。
select convert(now(),char(10));  
#查询结果2019-05-10
select convert('99',signed)+1;
#查询结果100
select convert(now(),date);  
#查询结果2019-05-10
select convert('99.99',decimal(5,2));
#查询结果100.00
select convert(now(),time);
#查询结果15:51:19
select convert(now(),datetime);
#查询结果2019-05-10 15:53:16

5、其他函数

  • if(expr1,expr2,expr3)
    expr1为TRUE,返回expr2,否则返回expr3
select IF(name is null,'未知',name),name from student1

  查询结果:
在这里插入图片描述

  • ifnull(expr1,expr2)
    expr1不是NULL,返回expr1,否则返回expr2。
 select ifnull(name,'未知'),name from student1

  查询结果:
在这里插入图片描述

二、多行函数

  • avg(input)
    avg 函数返回数值列的平均值。NULL 值不包括在计算中。
 select avg(age) from student

  查询结果:计算学生平均年龄

  • max(input)
select max(age) from student

  查询结果:查询学生中年龄的最大值

  • min(input)
select min(age) from student

  查询结果:查询学生中年龄的最小值

  • sum(input)
select sum(age) from student

  查询结果:查询学生年龄总和

  • count(*|input)
select count(name) from student
#查询有几条学生姓名不为空的信息
select count(*) from student
#查询表中共有几条信息
  • stddev(input):求标准差
  • variance(input):求方差

注意:后两种函数一般不用

### MySQL 数据库函数列表及其使用方法 以下是与 MySQL 数据库相关的常用函数以及它们的具体用法: #### 1. 时间日期处理函数 `DATE_FORMAT()` 是一种常用的字符串格式化时间的函数,能够将 `DATETIME` 或者 `TIMESTAMP` 类型的时间数据转换成指定格式的字符串。 例如,如果需要将字段 `create_time` 的时间部分提取出来并存储到另一个字段中,则可以执行以下 SQL 查询: ```sql UPDATE student SET create_date = DATE_FORMAT(create_time, "%Y-%m-%d"); ``` 此语句会将 `create_time` 中的时间按照年-月-日的形式进行格式化,并将其存入 `create_date` 字段[^4]。 --- #### 2. 流程控制语句中的内置逻辑 MySQL 支持多种流程控制结构来实现条件判断和循环操作。这些功能可以通过嵌套的方式完成复杂业务需求。具体包括但不限于以下几个方面: - **IF 语句**:用于简单的分支决策。 ```sql IF condition THEN statement_list; ELSE statement_list; END IF; ``` - **CASE 语句**:适用于多分支场景下的值匹配测试。 ```sql CASE value WHEN compare_value THEN result ... [ELSE default_result] END CASE; ``` - **LOOP 和 WHILE 循环**:允许重复执行一组命令直到满足特定终止条件为止。 ```sql LOOP -- 执行一系列指令... ITERATE loop_label; -- 跳转回顶部继续迭代过程. END LOOP; WHILE expression DO -- 当布尔表达式的计算结果为真时运行内部代码块. END WHILE; ``` 上述语法展示了如何利用不同的控制流机制构建动态脚本程序[^3]。 --- #### 3. 获取行物理位置模拟方式 尽管 MySQL 并未提供像某些其他关系型数据库管理系统那样显式暴露磁盘上每条记录确切存放地点的功能(即不存在类似于 Oracle 的 ROWID),但我们仍然可能借助唯一键或主关键字间接定位目标实体的位置信息。比如下面这个例子演示了怎样通过自定义列模仿 DM_ROWID 功能的效果: 假设存在一张名为 `your_table` 的表格,其中包含一列作为主键标识符 `_id_` ,那么就可以这样写查询请求以检索对应的伪 row id 值: ```sql SELECT CONCAT('Row_', _id_) AS dm_rowid FROM your_table WHERE some_condition; ``` 这里采用了字符串拼接技术生成了一个独一无二的人工标记串代表每一行的实际地址[^1]。 --- #### 4. 标准 SELECT 查询基础 为了从给定的数据集合里挑选出符合预期模式的结果集,应当采用基本形式的标准 SQL 查询模板——即由三个主要组成部分构成的选择子句 (SELECT),源表声明(FROM) 及过滤准则(WHERE) 。其一般书写样式如下所示: ```sql SELECT column_name1, column_name2,... FROM table_name WHERE conditional_expression ; ``` 在这个框架下,可以根据实际应用场景灵活调整所选属性的数量及名称、关联的目标对象类别还有附加限定条款的内容等等细节设置[^2]。 --- ### 总结 以上列举了几类重要的 MySQL 内置工具包成员连同其实现技巧要点说明。对于初学者来说掌握好这些基础知识有助于快速入门并熟练运用该平台开展日常开发运维工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值