【MySQL】数据处理函数

2023-11-05

函数

SQL支持利用函数来处理数据,但是函数的可移植性不强。如果决定使用函数应该保证做好代码注释,以便以后能确切地知道所编写SQL代码的含义。
大多SQL实现支持以下类型的函数:

  • 用于处理文本串的文本函数(例如删除或填充值,转换值为大小写);
  • 用于在数值数据上进行算术操作的数值函数(例如返回绝对值,进行代数运算);
  • 用于处理日期和时间值并从这些值中提取特定成分的日期和时间函数(例如返回2个日期之差,检查日期有效性);
  • 返回DBMS正使用的特殊信息的系统函数(例如返回用户登录信息,检查版本细节)。

文本处理函数

常用的文本处理函数:

函数 说明
Left() 返回串左边的字符
Length() 返回串的长度
Locate() 找出串的一个子串
Lower() 将串转换为小写
LTrim() 去掉串左边的空格
Right() 返回串右边的字符
RTrim() 去掉串右边的空格
Soundex() 返回串的SOUNDEX值
SubString() 返回子串的字符
Upper() 将串转换为大写

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

SELECT cust_name, cust_contact 
FROM customers 
WHERE Soundex(cust_contact) = Soundex('Y Lie');
# 它匹配所有发音类似于T.Lie的联系名

搜索结果

日期和时间处理函数

日期和时间采用相应的数据类型和特殊的格式存储,一般,应用程序不使用用来存储日期和时间的格式,因此日期和时间函数总是被用来读取、统计和处理这些值。
首先:MySQL使用的日期格式,日期必须为格式yyyy-mm-dd。

虽然MySQL支持2位数字的年份,但是应该总是使用4位数字的年份,使用完整的4位数字年份更可靠。

如果要检索一个2005-09-01的订单,语法是WHERE order_date = '2005-09-01’吗?
不,因为order_date的数据类型为datetime,这种类型存储日期及时间值,实际检索出来的是当天00:00:00的订单,因此你必须使用Date()函数。

SELECT cust_id, order_num 
FROM orders 
WHERE Date(order_date) = '2005-09-01';

也有Time()函数,在只想要时间时使用。

如果要检索出2005年9月下的所有订单怎么办?

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

其实这并不靠谱,因为还得考虑该月是大月还是小月。正确的做法是:

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

常用日期和时间处理函数:

函数 说明
AddDate() 增加一个日期(天、周等)
AddTime() 增加一个时间(时、分等)
CurDate() 返回当前日期
CurTime() 返回当前时间
Date() 返回日期时间的日期部分
DateDiff() 计算两个日期之差
Date_Add() 高度灵活的日期运算函数
Date_Format() 返回格式化的日期或时间串
Day() 返回日期的天数部分
DayOfWeek() 返回对应日期的星期几
Hour() 返回日期的小时部分
Minute() 返回日期的分钟部分
Month() 返回日期的月份部分
Now() 返回当前日期和时间
Second() 返回日期的秒部分
Time() 返回日期的时间部分
Year() 返回日期的年份部分

数值处理函数

数值处理函数一般主要用于代数、三角或几何运算,在主要DBMS的函数中,数值函数是最一致最统一的函数。
常用数值处理函数:

函数 说明
Abs() 返回绝对值
Cos() 返回角度的余弦
Exp() 返回数的指数值
Mod() 返回除操作的余数
Pi() 返回圆周率
Rand() 返回一个随机数
Sin() 返回角度的正弦
Sqrt() 返回数的平方根
Tan() 返回角度的正切
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【MySQL】数据处理函数 的相关文章

  • 如何在MySQL中查找上周的数据

    我想显示来自 Q1 每个学生只有最后一周 Q2 每个学生只有最后一个月 我怎样才能实现这个目标 一周演示 http sqlfiddle com 2 f1fbb 3 当月演示 http sqlfiddle com 2 f1fbb 4 CREA
  • 显示过去 7 天 PHP 的结果

    我想做的是显示过去 30 天的文章 但我现有的代码不断给我一个 mysql fetch assoc 错误 然后追溯到我的查询 这是代码 sql mysql query SELECT FROM table WHERE DATE datetim
  • 执行许多插入重复键更新错误:未使用所有参数

    所以我一直在尝试使用 python 2 7 15 使用 mysql connector 执行此查询 但由于某种原因 它似乎不起作用并且总是返回错误 并非所有参数都被使用 表更新有一个主键 即 ID 这是我尝试运行此 SQL 的查询 sql
  • MySQL 触发器和 SUM()

    我有两张桌子 学生桌和家庭桌 在学生中 我有列 st venue 和total venue 家里我有收入 Total Revenue 是学生 st 收入与家庭收入之和 其中 family id student student id stud
  • 在 MySQL 中分割逗号分隔值

    我正在尝试将字符串中以逗号分隔的 值拆分为多列 样本数据 COL1 COL2 COL3 000002 000003 000042 09 31 51 007 004 007 预期输出 Pno Cno Sno 000002 09 007 000
  • 如何使用实体框架设置连接字符串

    我将 EF6 与 MySQL 结合使用 并有一个用于多个数据库的模型 我希望能够在我的表单中设置连接设置 如何以编程方式设置模型的连接字符串 你应该使用EntityConnectionFactory这就是您所需要的 public strin
  • SQL 大表中的随机行(使用 where 子句)

    我有一个网站 人们可以在其中对汽车进行投票 向用户展示 4 辆汽车 他 她可以投票选出他们最喜欢的汽车 桌子cars有重要的列 car id int 10 not auto increment so has gaps views int 7
  • PHP/MySQL:如何在网站中创建评论部分[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我不会问 如何使用 PHP MySQ
  • 数据表 - 服务器端处理 - 数据库列合并

    我目前正在使用 DataTables 1 10 5 服务器端处理功能 http www datatables net examples data sources server side html http www datatables ne
  • Laravel Group By 和 Order By 不起作用

    我尝试制作一个Laravel 5 8项目 项目中的数据是这样的 id purch name prcvalue 1 10234 Nabila 100 2 10234 Nadeera 450 3 10234 Nabila 540 4 10234
  • 我可以在一个查询中更新/选择表吗?

    我需要在查看页面时选择数据并更新 视图 列 有没有一种方法可以在一个查询中执行此操作 或者我是否必须使用不同的查询 如果您不想 不需要使用事务 则可以创建一个存储过程 该过程首先更新视图计数 然后选择值并将其返回给用户
  • #1045 - 用户“root”@“localhost”的访问被拒绝(使用密码:YES)

    这可能看起来多余 但我无法找到正确的解决方案 我无法使用 mysql 控制台登录 mysql 它要求输入密码 但我不知道我实际输入的内容 有办法获取密码或更改密码吗 这就是我的 config inc 的样子 当我尝试打开 phpmyadmi
  • 高效插入和更新时检查唯一性

    我的员工表中有 2 列 每列值必须是唯一的 staff code staff name staff id staff code staff name 1 MGT Management 2 IT IT staff 当向表中插入或更新项目时 我
  • SQL:查找每个跑步者跑步之间的平均天数

    因此 如果我们给出下表 runner ran Carol 2011 02 01 Alice 2011 02 01 Bob 2011 02 01 Carol 2011 02 02 Bob 2011 02 02 Bob 2011 02 03 B
  • 通过将行旋转为动态数量的列来在 MySQL 中创建摘要视图

    我在 MySQL 中有一个表 其中包含以下字段 id company name year state 同一客户和年份有多行 以下是数据示例 id company name year state 1 companyA 2008 1 2 com
  • SQLSTATE[HY000] [2002] 资源暂时不可用 - mysql - innodb 和 pdo

    在我的错误日志中得到大量结果 如下所列 数据库中的所有表都是 innodb 并且就与这些表的任何交互而言 一切都是带有准备好的语句的 pdo 正如我所说 所有错误几乎与下面列出的错误相同 但发生在几个不同的页面上 无论页面如何 错误行始终指
  • INNER JOIN 可用作 SELECT,但不能用作 DELETE [重复]

    这个问题在这里已经有答案了 为什么这个有语法错误 DELETE FROM print mailing request pmr INNER JOIN person p ON p id pmr person AND p email LIKE T
  • 在 MySQL 数据库上使用版本控制 (Git)

    我是一名 WordPress 设计师 开发人员 越来越多地使用版本控制 特别是 Git 尽管我确实在某些项目中使用 SVN 我目前正在使用 Beanstalk 作为我的远程仓库 将所有 WordPress 文件添加到我的存储库中是没有问题的
  • 消除 JPA 标准中子查询产生的冗余连接

    我只需要使用 JPA 标准执行以下 MySQL 查询 获取状态列表 来自state table 基于给定的国家名称 在country SELECT state id state name country id FROM state tabl
  • PHP + MySQL 队列

    我需要一个充当队列的简单表 我的 MySQL 服务器限制是我不能使用 InnoDB 表 只能使用 MyISAM 客户 工人将同时工作 他们每次都需要接受不同的工作 我的想法是执行以下操作 伪代码 job lt SELECT FROM que

随机推荐

  • windowsVNC远程桌面连接虚拟机

    准本环境关闭防火墙 systemct stop firewalld setenforce 0 iptables F 第一步虚拟机安装VNC yum y install tigervnc server 第二步VNC密码 vncserver 查
  • PowerShell-自定义函数(一) 第一个自定义Function

    在PowerShell中 我们可以自定义一个函数来实现一个特定的功能 以达到重复使用的目的 准备由简单到复杂做一个小系列分享一下 首先我们写一个非常简单的自定义函数 目标 输入姓名和年龄后 直接在显示 某某 今年 多少 岁 示例 Funct
  • WDS1期第11课 根文件系统 3 busybox 编译安装根文件系统make menuconfig install

    配置 编译 busybox 在根目录下INSTALL文件里有说明 make menuconfig This creates a file called config make This creates the busybox executa
  • 蓝桥杯 省赛真题寻找 2020

    简单题 暴力解决 include
  • 判断对象中是否存在某属性

    判断属性是否存在于对象的几种方式 const demoData name Tom age 18 sex undefined console log demoData name 打印值undefined console log name in
  • NNOM第一个模型实例

    目录 一 keras开发环境搭建 二 安装visual studio 2019 1 下载安装 2 配置使用MSVC编译器 三 编译第一个NNOM的demo 1 下载源码 2 安装依赖库 3 编译auto test 四 移植 1 新建新的VS
  • MPEG-4 Audio 关于esds 记录

    当解析Mp4的时候 会碰到这个esds 的box 这个box 有很多信息 当时是为了解决在MP4A中如何判断是acc还是 MP3 然后找到下面答案 https wiki multimedia cx index php title MPEG
  • ubuntu安装gcc-11提示Unable to locate package gcc-11

    使用 sudo apt get install gcc 11 想安装高版本的gcc但是怎么更新源都提示 Unable to locate package gcc 11 升级到ubuntu20 04也没解决 最后是添加了 sudo add a
  • html bottom html submit按钮表单控件与CSS美化

    一 html submit与bottom按钮基本语法结构 1 html submit按钮在input标签里设置type submit 即可设置此表单控件为按钮 submit按钮代码
  • HTTP协议-----------应用层协议

    一 引言 协议 就是一种约定 双方为了更好的完成某项活动 而一致遵守的约定 应用层协议 我们程序员自己定义的协议 最常见的应用层协议是http协议 二 URL和URI的区别与联系 URI统一资源标识符 用来唯一的标识一个资源 但不能定位 U
  • 主题配置和 消息发送(一)KafkaTemplate 的使用

    一 主题 1 1 配置主题 在应用程序上下文定义一个 KafkaAdmin Bean 它可以自动将主题添加到代理 通过这个Bean可以将 每一个新建的主题 Topic 添加到应用程序上下文中 下面是一个简单的示例 也可以创建 TopicBu
  • 计算机用户打印权限设置,如何设置打印机权限?

    2007 04 12 安装有打印机的电脑 开始 设置 打印机 右键点共享 没安装打印机的电脑 开始 设置 打印机 添加打印机 网络打印机 浏览打印机 双击workgroup下的用户 选中打印机 确定 第一步 在主机的 打印机和传真 文件夹中
  • linux内存swap什么意思,Linux中Swap与Memory内存简单介绍

    1 背景介绍 这篇文章介绍一下Linux中swap与memory 对于memory没什么可说的就是机器的物理内存 读写速度低于cpu一个量级 可是高于磁盘不止一个量级 因此 程序和数据若是在内存的话 会有很是快的读写速度 可是 内存的造价是
  • 函数和存储过程区别

    Waiting 转载于 https www cnblogs com Tim Liu archive 2011 04 26 2029500 html
  • 组合分类方法——装袋(bagging);提升(boosting)和AdaBoost;随机森林

    此篇文章仅作为个人学习笔记之用 内容来之数据挖掘技概念与技术 第三版 一书 由于编辑很是麻烦 我直接截图WPS下编辑好的内容 二 提升 boosting 和AdaBoost 三 随机森林
  • Linux Tips · VMWare上Linux运行很慢的解决

    目前的主流PC运行虚拟机 问题不是很大 然而在VMware上安装的有的Linux 比如Suse 10 2 却运行暴慢 文字明显是一行一行往上移的 其实这并不是因为程序运行慢 主要原因是启用了较高的显示设置 这些LINUX发行版主要目标是桌面
  • 线程池的主要处理流程及常用方法

    线程池的主要处理流程及常用方法 更多优秀文章 请扫码关注个人微信公众号或搜索 程序猿小杨 添加 一 主要处理流程 当调用线程池execute 方法添加一个任务时 threadPoolExecutor execute 具体代码如下 priva
  • cocos2dx opengl入门系列二-画一个三角形

    运行环境 mac10 12 2 xcode Version 8 2 1 cocos2dx x 3 13 1 代码 新建cocos2dx项目 具体操作官网有教程 新建好后 新建Test cpp 代码如下 Test cpp FirstTrian
  • 时序预测

    时序预测 MATLAB实现基于EMD GRU时间序列预测 EMD分解结合GRU门控循环单元 目录 时序预测 MATLAB实现基于EMD GRU时间序列预测 EMD分解结合GRU门控循环单元 效果一览 基本描述 模型描述 程序设计 参考资料
  • 【MySQL】数据处理函数

    函数 文本处理函数 日期和时间处理函数 数值处理函数 函数 SQL支持利用函数来处理数据 但是函数的可移植性不强 如果决定使用函数应该保证做好代码注释 以便以后能确切地知道所编写SQL代码的含义 大多SQL实现支持以下类型的函数 用于处理文