news 2026/5/11 7:36:03

SQL必会必知整理-09-使用数据处理函数

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
SQL必会必知整理-09-使用数据处理函数
9.1 函数
  • 函数一般是在数据上执行的,它给数据的转换和处理提供了方便。
  • 能运行在多个系统上的代码称为可移植的(portable)。相对来说,多数SQL语句是可移植的,在SQL实现之间有差异时,这些差异通常不那么难处理。而函数的可移植性却不强。几乎每种主要的DBMS的实现都支持其他实现不支持的函数,而且有时差异还很大。为了代码的可移植,许多SQL程序员不赞成使用特殊实现的功能。虽然这样做很有好处,但不总是利于应用程序的性能。如果不使用这些函数,编写某些应用程序代码会很艰难。必须利用其他方法来实现DBMS非常有效地完成的工作。如果你决定使用函数,应该保证做好代码注释,以便以后你(或其他人)能确切地知道所编写SQL代码的含义。
9.2 使用函数
  • 大多数SQL实现支持以下类型的函数:
    • 用于处理文本串(如删除或填充值,转换值为大写或小写)的文本函数。
    • 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数。
    • 用于处理日期和时间值并从这些值中提取特定成分(例如,返回两个日期之差,检查日期有效性等)的日期和时间函数。
    • 返回DBMS正使用的特殊信息(如返回用户登录信息,检查版本细节)的系统函数。
9.2.1 文本处理函数
SELECT vend_name,UPPER(vend_name) AS vend_name_upcase FROM vendors ORDER BY vend_name;
  • Upper()将文本转换为大写
  • 常见的文本处理函数
函数
说明
Left()
返回串左边的字符
Right()
返回串右边的字符
Length()
返回串的长度
Locate()
找出串的一个子串
SubString()
返回子串的字符
Upper()
将串转换成大写
Lower()
将串转换成小写
LTrim()
去掉串左边的空字符
RTrim()
去掉串右边的字符
Soundex()
返回串的SOUNDEX值
  • SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音字符和音节,使得能对串进行发音比较而不是字母比较。虽然SOUNDEX不是SQL概念,但MySQL(就像多数DBMS一样)都提供对SOUNDEX的支持。
SELECT cust_name,cust_contact FROM customers WHERE Soundex(cust_contact) = Soundex('Y Lie');
  • 在这个例子中,WHERE子句使用Soundex()函数来转换cust_contact列值和搜索串为它们的SOUNDEX值。因为Y.Lee和Y.Lie发音相似,所以它们的SOUNDEX值匹配,因此WHERE子句正确地过滤出了所需的数据。
9.2.2 日期和时间处理函数
  • 日期和时间采用相应的数据类型和特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。
  • 一般,应用程序不使用用来存储日期和时间的格式,因此日期和时间函数总是被用来读取、统计和处理这些值。由于这个原因,日期和时间函数在MySQL语言中具有重要的作用。
  • 常见的日期和时间处理函数
函数
说明
AddDate()
增加一个日期(天、周等)
AddTime()
增加一个时间(时、分等)
CurDate()
返回当前日期
CurTime()
返回当前时间
Date()
返回日期时间的日期部分
DateDiff()
计算两个日期之差
Date_Add()
高度灵活的日期运算函数
Date_Format()
返回一个格式化的日期或时间串
DayOfWeek()
对于一个日期,返回对应的星期几
Year()
返回一个日期的年份部分
Month()
返回一个日期的月份部分
Day()
返回一个日期的天数部分
Time()
返回一个日期时间的时间部分
Hour()
返回一个时间的小时部分
Minute()
返回一个时间的分钟部分
Second()
返回一个时间的秒部分
Now()
返回当前日期和时间
  • 无论你什么时候指定一个日期,不管是插入或更新表值还是用WHERE子句进行过滤,日期必须为格式yyyy-mm-dd。
SELECT cust_id,order_num FROM orders WHERE Date(order_date) = '2005-09-01';
  • 如果你想要的仅是日期,则使用Date()是一个良好的习惯,即使你知道相应的列只包含日期也是如此。这样,如果由于某种原因表中以后有日期和时间值,你的SQL代码也不用改变。当然,也存在一个Time()函数,在你只想要时间时应该使用它。
  • 如果你想检索出20059月下的所有订单,怎么办?
SELECT cust_id,order_num FROM orders WHERE Year(order_date) = '2005' AND Month(order_date) = '9';
9.2.3 数值处理函数
  • 数值处理函数仅处理数值数据。这些函数一般主要用于代数、三角或几何运算,因此没有串或日期—时间处理函数的使用那么频繁。
函数
说明
Abs()
返回一个数的绝对值
Sin()
返回一个角度的正弦
Cos()
返回一个角度的余弦
Tan()
返回一个角度的正切
Exp()
返回一个数的指数值
Mod()
返回除操作的余数
Pi()
返回圆周率
Rand()
返回一个随机数
Sqrt()
返回一个数的平方根
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/10 21:36:34

19、文本处理与分析全攻略

文本处理与分析全攻略 在日常的文本处理和分析中,我们常常需要用到各种工具和方法来完成不同的任务,比如查找同义词、检查语法、统计文本信息以及分析文本相关性等。下面将为大家详细介绍这些工具和方法的使用。 查找词汇的上位词 上位词是指含义比给定词汇更宽泛的相关词…

作者头像 李华
网站建设 2026/5/8 10:00:24

Fifth Assignment——Alpha Sprint

Fifth Assignment——Alpha Sprint 1. Brief Description Which course does this assignment belong toMIEC EE308FZWhere are the requirements for this assignment?Fifth Assignment——Alpha SprintTeam NameMindCareersThe objective of this assignment1 blog post T…

作者头像 李华
网站建设 2026/5/10 10:51:09

零基础搭建Qwen-Image+Gradio本地绘画WebUI

零基础搭建Qwen-ImageGradio本地绘画WebUI 在AI生成内容(AIGC)浪潮席卷设计行业的今天,越来越多的创作者希望拥有一个完全私有、可控且支持中文语境的图像生成工具。市面上虽然不乏强大的文生图模型,但对中文提示词理解弱、部署复…

作者头像 李华
网站建设 2026/5/10 9:26:01

谷歌浏览器插件打包和加载

1.去插件管理页面 谷歌浏览器插件管理 edge插件管理,查看插件id 2.复制id ,查找文件所在位置(注意替换插件id) find ~/Library -type d -name "bhghoamapcdpbohphigoooaddinpkbai" 2>/dev/null 3.复制插件所在位置,在插件管理…

作者头像 李华
网站建设 2026/5/5 3:18:49

Dify智能体平台的版本发布机制是如何运作的?

Dify智能体平台的版本发布机制是如何运作的? 在AI应用从实验原型迈向生产系统的今天,一个常被忽视但至关重要的问题浮出水面:我们如何确保今天调好的提示词,明天上线后依然有效? 这个问题背后,是传统AI开…

作者头像 李华