SQL必知必会——使用函数处理数据

【SQL必知必会-使用函数处理数据】 牛客网 SQL 22 题解:顾客登录名 题意明确: 返回顾客 ID(cust_id)、顾客名称(cust_name)和登录名(user_login), 其中登录名全部为**大写字母**, 并由顾客联系人的前两个字符(cust_contact)和其所在城市的前三个字符(cust_city)组成 提示:需要使用函数、拼接和别名。 问题分解: 1. 限定条件:无; 2. 筛选字段:cust_id,cust_name,user_login 3. 登录名:联系人的前两个字符&城市的前两个字符组合 - l 阅读详情

1、函数

与大多数其他计算机语言一样,SQL也可以用函数来处理数据。函数一般是在数据上执行的,为数据的转换和处理提供了方便。

与几乎所有DBMS都等同地支持SQL语句(如SELECT)不同,每一个DBMS都有特定的函数。事实上,只有少数几个函数被所有主要的DBMS等同地支持。虽然所有类型的函数一般都可以在每个DBMS中使用,但各个函数的名称和语法可能极其不同。为了说明可能存在的问题,下表列出了3个常用的函数及其在各个DBMS中的语法:
在这里插入图片描述
可以看到,与SQL语句不一样,SQL函数不是可移植的。这意味着为特定SQL实现编写的代码在其他实现中可能不能用。

2、使用函数

大多数SQL实现支持以下类型的函数。

  • 用于处理文本字符串(如删除或填充值,转换值为大写或小写)的文本函数。
  • 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的数值函数。
  • 用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期之差,检查日期有效性)的日期和时间函数。
  • 用于生成美观好懂的输出内容的格式化函数(如用语言形式表达出日期,用货币符号和千分位表示金额)​。
  • 返回DBMS正使用的特殊信息(如返回用户登录信息)的系统函数。

2.1、文本处理函数

使用的是UPPER()函数:

SELECT vend_name, UPPER(vend_name) AS vend_name_upcase
FROM Vendors
ORDER BY vend_name;

+-----------------+------------------+
| vend_name       | vend_name_upcase |
+-----------------+------------------+
| Bear Emporium   | BEAR EMPORIUM    |
| Bears R Us      | BEARS R US       |
| Doll House Inc. | DOLL HOUSE INC.  |
| Fun and Games   | FUN AND GAMES    |
| Furball Inc.    | FURBALL INC.     |
| Jouets et ours  | JOUETS ET OURS   |
+-----------------+------------------+
6 rows in set (0.07 sec)

下表列出了一些常用的文本处理函数。
在这里插入图片描述
表中的SOUNDEX需要做进一步的解释。SOUNDEX是一个将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音字符和音节,使得能对字符串进行发音比较而不是字母比较。虽然SOUNDEX不是SQL概念,但多数DBMS都提供对SOUNDEX的支持。

PostgreSQL不支持SOUNDEX(),因此以下的例子不适用于这个DBMS另外,如果在创建SQLite时使用了SQLITE_SOUNDEX编译时选项,那么SOUNDEX()在SQLite中就可用。因为SQLITE_SOUNDEX不是默认的编译时选项,所以多数SQLite实现不支持SOUNDEX()。

下面给出一个使用SOUNDEX()函数的例子。Customers表中有一个顾客Kids Place,其联系名为MichelleGreen。但如果这是错误的输入,此联系名实际上应该是Michael Green,该怎么办呢?显然,按正确的联系名搜索不会返回数据,如下所示:

SELECT cust_name, cust_contact
FROM Customers
WHERE cust_contact = 'Michael Green';

cust_name                           cust_contact
--------------------------      ----------------------------

现在试一下使用SOUNDEX()函数进行搜索,它匹配所有发音类似于Michael Green的联系名:

SELECT cust_name, cust_contact
FROM Customers
WHERE SOUNDEX(cust_contact) = SOUNDEX('Michael Green');

+------------+----------------+
| cust_name  | cust_contact   |
+------------+----------------+
| Kids Place | Michelle Green |
+------------+----------------+
1 row in set (0.06 sec)

在这个例子中,WHERE子句使用SOUNDEX()函数把cust_contact列值和搜索字符串转换为它们的SOUNDEX值。因为Michael Green和Michelle Green发音相似,所以它们的SOUNDEX值匹配,因此WHERE子句正确地过滤出了所需的数据。

2.2、日期和时间处理函数

日期和时间采用相应的数据类型存储在表中,每种DBMS都有自己的特殊形式。日期和时间值以特殊的格式存储,以便能快速和有效地排序或过滤,并且节省物理存储空间。

应用程序一般不使用日期和时间的存储格式,因此日期和时间函数总是用来读取、统计和处理这些值。由于这个原因,日期和时间函数在SQL中具有重要的作用。遗憾的是,它们很不一致,可移植性最差。

我们举个简单的例子,来说明日期处理函数的用法。Orders表中包含的订单都带有订单日期。要检索出某年的所有订单,需要按订单日期去找,但不需要完整日期,只要年份即可。

为在SQL Server中检索2020年的所有订单,可如下进行:

SELECT order_num
FROM Orders
WHERE DATEPART(yy, order_date) = 2020;

order_num
-----------
20005
20006
20007
20008
20009

这个例子使用了DATEPART()函数,顾名思义,此函数返回日期的某一部分。DATEPART()函数有两个参数,它们分别是返回的成分和从中返回成分的日期。在此例子中,DATEPART()只从order_date列中返回年份。通过与2020比较,WHERE子句只过滤出此年份的订单。

下面是使用名为DATE_PART()的类似函数的PostgreSQL版本:

SELECT order_num
FROM Orders
WHERE DATE_PART('year', order_date) = 2020;

Oracle没有DATEPART()函数,不过有几个可用来完成相同检索的日期处理函数。例如:

SELECT order_num
FROM Orders
WHERE EXTRACT(year FROM order_date) = 2020;

在这个例子中,EXTRACT()函数用来提取日期的成分,year表示提取哪个部分,返回值再与2020进行比较。完成相同工作的另一方法是使用BETWEEN操作符:

SELECT order_num
FROM Orders
WHERE order_date BETWEEN to_date('2020-01-01', 'yyyy-mm-dd')
 AND to_date('2020-12-31', 'yyyy-mm-dd');

在此例子中,Oracle的to_date()函数用来将两个字符串转换为日期。一个包含2020年1月1日,另一个包含2020年12月31日。BETWEEN操作符用来找出两个日期之间的所有订单。值得注意的是,相同的代码在SQL Server中不起作用,因为它不支持to_date()函数。但是,如果用DATEPART()替换to_date(),当然可以使用这种类型的语句。

DB2,MySQL和MariaDB具有各种日期处理函数,但没有DATEPART()。DB2,MySQL和MariaDB用户可使用名为YEAR()的函数从日期中提取年份:

SELECT order_num
FROM Orders
WHERE YEAR(order_date) = 2020;
SQL数据处理工具 SQL数据处理工具 SQL数据处理工具 SQL数据处理工具 SQL数据处理工具 立即下载

相关推荐

Ubuntu20.04下Intel RealSense D435i相机驱动配置全攻略(含ROS Noetic适配)

本文详细介绍了在Ubuntu20.04系统下配置Intel RealSense D435i相机驱动的完整流程,包括libRealsense SDK 2.0安装、ROS Noetic适配及常见问题解决方案。通过实战指南帮助开发者快速实现深度相机与ROS的集成,适用于机器人视觉和SLAM应用开发。

weixin_29281915的博客 512

数据处理--sql

1 Select&from 知识点: 标准语法 select 字段名 (决定这一段查询最后显示的字段) from 表名 (指定这段查询语句涉及的数据来源) 从word单表在select后指定查询的字段名称,多个字段名称之间用英文逗号(,)隔开 在select核心语句中,在字段后面加as别名,可以给字段名在最后显示前予别名,as可以省略,写成 字段名 别名。注意字段名和别名之间有空格,别名和下一字段名之间为逗号 select和(*)通配符联用返回查询的表中所有的列 .

qq_51118755的博客 1568

南大计算机2024保研笔试:编译原理等5门专业课考点分布与408复习避坑指南

本文详细解析了南京大学计算机2024保研笔试的考点分布与复习策略,重点突出编译原理(占比28%-32%)和离散数学的特色考核。提供跨课程复习方法、真题题型分析及高效备考建议,帮助考生突破传统408框架,应对南大独特的命题风格。

weixin_29304985的博客 345

day07-使用函数处理数据

【代码】day07-使用函数处理数据。

三思博客 356

保姆级教程:用Simulink从零搭建新能源汽车VCU蠕行控制模型(附模型下载)

本文提供了一份详细的Simulink建模教程,指导读者从零开始搭建新能源汽车VCU蠕行控制模型。内容涵盖环境配置、信号定义、蠕行模式使能条件、扭矩控制算法实现及模型验证等关键步骤,特别适合需要将控制算法转化为可执行模型的初学者。教程还包含实用代码示例和常见问题解决方案,帮助开发者快速掌握VCU蠕行控制的Simulink实现技巧。

547

VSCode + ESP-IDF 项目搭建及配置

VSCode 搭建 ESP-IDF 开发环境

weixin_51358957的博客 2万+

SQL 预处理

如果不用预处理,直接拼接 SQL 字符串传递参数,攻击者可通过构造恶意参数,篡改 SQL 逻辑,窃取 / 篡改 / 删除数据库数据。安全第一:预处理是防范 SQL 注入的「唯一可靠手段」,任何包含外部参数的 SQL 都必须用预处理,这是数据库安全的底线;性能优化:重复执行相同逻辑的 SQL 时,预处理跳过解析 / 编译步骤,效率提升显著;易用性提升:自动处理类型转换和特殊字符转义,减少编码错误,让代码更健壮。

笔记本 407

脱壳--02.exe

程序开始 使用OD打开程序 发现无法利用esp定律 程序直接运行 查找模块间调用 随便找到一个函数的调用 发现是FF15方式调用 所以是vs的程序 vs程序大致分成两种 vs20xx (特征函数:GetSystemTimeAsFileTime)和 vc++6.0(特征函数:GetVersion) 通过链接器版本 发现是vc6.0 直接在GetVersion上下断点 重新运行程序 断点断下 返回到调用处 vc6.0和易语言的第一个CALL都是GetVers...

weixin_45012273的博客 1112

每日一课 | SQL数据处理

01.SQL入门大家好,我是小C,上期分享的《Python全栈60天精通之路》专栏七天打卡结束了,如果忘记的小伙伴可以进入公号查看往期文章哦~本期小C邀请的是董旭阳老师(资深数据库架构师)...

sinat_32849897的博客 603

使用MATLAB结合EasySpin进行ESR模拟的详细步骤及示例代码

安装EasySpin:确保你已经安装了EasySpin工具箱,它可以帮助你进行ESR模拟。你可以从EasySpin的官方网站(https://easyspin.org/)下载并安装。准备实验数据:将实验得到的EPR数据整理成合适的格式,一般包含磁场(Magnetic Field)和信号强度(Intensity)两列。进行模拟:使用EasySpin的函数对单线态氧自由基和超氧自由基进行模拟。调整参数:通过调整模拟参数,使模拟得到的峰型和峰位置与实验数据尽可能匹配。导出数据。

AI的内部世界的博客 2005

VS Code 重大更新:Agent Skills完美支持!

代码不会骗人,但你的 LLM 可能会编个故事——除非你给它一本《技能手册》。——某位深夜调试成功的 Go 工程师。

weixin_44058951的博客 3459

SQL 必知必会第八课 使用函数处理数据

SQL 必知必会第八课 使用函数处理数据 select vend_name, upper(vend_name) as vend_name_upcase from vendors order by vend_name; select cust_name, cust_contact from customers where cust_contact = 'Michael Green'; select cust_name, cust_contact from customers where soundex(cu

weixin_46231273的博客 191

RT-DETR 跨模态检测改进:融合红外数据提升 R50 夜间检测效果

本文提出跨模态自适应融合RT-DETR(CMF-RTDETR-R50),通过双分支骨干网络、可变形模态对齐和门控注意力融合三大模块,将红外数据融入RT-DETR-R50检测器,显著提升夜间目标检测性能。该方法在夜间场景下mAP@0.5提升11.7%,小目标检测AP_S提升15.3%,同时保持实时性(38 FPS)。关键技术包括:1)独立提取可见光与红外特征;2)可变形卷积解决模态对齐问题;3)动态门控机制自适应融合双模态特征。该方案适用于安防监控、自动驾驶等夜间检测场景,为跨模态实时检测提供实用解决方案。

走向CTO的路上... 1447

SQL必知必会—使用数据处理函数

《SQL必知必会》读书笔记 1.函数 与几乎所有DBMS都等同地支持SQL语句(如SELECT)不同,每一个DBMS都有特定的函数。事实上,只有少数几个函数被所有主要的DBMS等同支持。 DBMS函数的差异: 可以看到,与SQL语句不一样,SQL函数不是可移植的。这表示为特定SQL实现编写的代码在其他实现中可能不正常。 2.使用函数 大多数SQL实现支持以下类型的函数。 ...

yangyang的专栏 4419

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

SQL 必知必会 Chapter 8 —— 使用函数处理数据

typora-copy-images-to: SQL 必知必会 文章目录typora-copy-images-to: SQL 必知必会SQL 必知必会 Chapter 8 使用函数处理数据8.1 函数8.2 使用函数8.3 小结 SQL 必知必会 Chapter 8 使用函数处理数据 8.1 函数 注意:MySQL使用的是SUBSTRING、CONVERT、CURDATE() 如果使...

Jame Lu 的博客 295

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SQL必知必会总结8 使用函数处理数据

8.1 函数 函数带来的问题 与几乎所有 DBMS 都等同地支持 SQL 语句(如 SELECT)不同,每一个DBMS 都有特定的函数。为了说明可能存在的问题,表 8-1列出了 3 个常用的函数及其在各个 DBMS 中的语法: 可以看到,与 SQL 语句不一样,SQL 函数不是可移植的。这意味着为特定 SQL 实现编写的代码在其他实现中可能不正常。 可移植(portable) 所编写的代码可以在多个系统上运行。 为了代码的可移植,许多 SQL 程序员不赞成使用特定于实现的功能。虽然这样做很有好处,但有的时

优先级4.0 563

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

SQL必知必会笔记八(使用函数处理数据)

什么是函数,DBMS支持何种函数,以及如何使用这些函数;为什么SQL函数的使用可能会带来问题。 一、函数 与大多数其他计算机语言一样,SQL也可以用函数来处理数据。函数一般是在数据上执行的,为数据的转换和处理提供了方便。 例如SQL必知必会笔记七(创建计算字段)用来去掉字符串尾的空格的RTRIM()就是一个函数。 函数带来的问题: 与几乎所有DBMS都等同地支持SQL语句(如SELECT...

qq_41007611的博客 330

SQL必知必会 第八课 笔记——使用数据处理函数

第8课 使用数据处理函数这一课介绍什么是函数,DBMS支持何种函数,以及如何使用这些函数;还将讲解为什么SQL函数的使用可能会带来问题。8.1 函数函数带来的问题:       事实上,只有少数几个函数被所有主要的DBMS等同地支持。虽然所有类型的函数一般都可以在每个DBMS中使用,但各个函数的名称和语法可能极其不同。(区别于支持SQl语句)提示:是否应该使用函数?       现在,你面临是否应...

zjhysj的博客 483

SQL必知必会 第8课 使用函数处理数据

8.1 函数 SQL同其他计算机语言一样,可以使用函数来处理数据。 但是每一个DBMS都有其特定的函数,只有少数几个函数被所以主要的DBMS等同的支持。SQL语句不可移植。所以许多人不赞成使用特定于实现的功能。 8.2 使用函数 大多数SQL实现支持以下类型函数。 处理文本字符串的文本函数 在数值数据上进行算术操作 处理日期和时间值并从这些值中提取特定成分 生成美观好懂的输出内容的格式化函数 返回DBMS正使用的特殊信息的系统函数 文本处理函数 函数 说明 LEFT() 返回字符串左边的

karry_zzj的博客 173

《SQL必知必会》:数据处理函数 文本 日期 数值

文章目录1. 函数2. 使用函数2.1 文本处理函数2.2 日期和时间处理函数2.3 数值处理函数 1. 函数 SQL 语句不一样,SQL 函数不是可移植的。 可移植(portable) 所编写的代码可以在多个系统上运行。 2. 使用函数 大多数SQL 实现支持以下类型的函数。 用于处理文本字符串(如删除或填充值,转换值为大写或小写)的文 本函数。 用于在数值数据上进行算术操作(如返回绝对值,进行代数运算)的 数值函数。 用于处理日期和时间值并从这些值中提取特定成分(如返回两个日期 之差,检查日期有效性

超级大洋葱的博客 601

SQL必知必会(3)——使用数据处理函数

第8课  使用数据处理函数 http://www.cnblogs.com/prettysmc/p/5568282.html 1.SQL也可以用函数来处理数据,函数一般是在数据上执行的,为数据的转换和处理提供了方便。但是每一个数据库管理系统(Database Management System DBMS)都有特定的函数,事实上,只有少数几个函数被所有的DBMS等同地支持。例如, MY

ddd_1206的博客 349

【SQL 必知必会】- 第八课 使用函数处理数据

虽然所有类型的函数一般都可以在每个DBMS 中使用,但各个函数的名称和语法可能极其不同。如果你决定使用函数,应该保证做好代码注释,以便以后你(或其他人)能确切地知道所编写的SQL 代码的含义。应用程序一般不使用日期和时间的存储格式,因此日期和时间函数总是用来读取、统计和处理这些值。遗憾的是,它们很不一致,可移植性最差。Oracle的 to_char()函数用来提取日期的成分,to_number()用来将提取出的成分转换为数值。具有讽刺意味的是,在主要DBMS 的函数中,数值函数是最一致、最统一的函数。

Roki_Zhang的博客 686

SQL必知必会——使用函数处理数据(八)

1、函数 注意: 1、与几乎所有DBMS都等同的支持SQL语句不同,每一个DBMS都有特定的函数。事实上,只有少数几个函数被所有主要的DBMS等同支持。虽然所有类型的函数一般都可以在每个DBMS中使用,但各个函数的名称和语法可能不同。 2、可移植性:所编写的代码可以在多个系统上进行。 3、是否应该使用函数?决定权在开发人员自己,如果决定使用函数,应该保证做好代码注释。 2、使用函数 大多数SQL实...

qq_28285403的博客 402

《SQL必知必会》(7,8):创建计算字段、使用数据处理函数

上回:《SQL必知必会》(4,5,6):过滤数据、高级数据过滤、通配符过滤 文章目录第七课:创建计算字段7.1 计算字段7.2 拼接字段使用别名7.3 执行算数计算7.4 小结第八课:使用数据处理函数8.1 函数8.2 使用函数8.2.1 文本处理函数8.2.2 日期和时间处理函数8.2.3 数值处理函数8.3 小结 第七课:创建计算字段 7.1 计算字段 存储在数据库中的数据一般不是我们程序所需要的格式,如: 物品订单表存储物品的价格和数量,不存储每个物品的总价格(用价格乘以数量即可)。但为打印发票,需

卑微程序猿的野心和梦想 1300

SQL必知必会(8)——使用函数处理数据

1、函数 注意: 1、与几乎所有DBMS都等同的支持SQL语句不同,每一个DBMS都有特定的函数。事实上,只有少数几个函数被所有主要的DBMS等同支持。虽然所有类型的函数一般都可以在每个DBMS中使用,但各个函数的名称和语法可能不同。 2、可移植性:所编写的代码可以在多个系统上进行。 3、是否应该使用函数?决定权在开发人员自己,如果决定使用函数,应该保证做好代码注释。 2、使用函数 大多数S...

qq_34573534的博客 176

【SQL必知必会-使用函数处理数据二】

牛客网SQL23 题解:返回 2020 年 1 月的所有订单的订单号和订单日期 题意明确: 编写 SQL 语句,返回 2020 年 1 月的所有订单的订单号(order_num)和订单日期(order_date),并按订单日期升序排序 问题分解: 限定条件:order_date在2020年1月 ①where date like “%2020-01%” ②where date_format(order_date,’%Y%m’) = 202001 ③ 细节问题: 完整代码: 在这里插入代码片 .

weixin_47606472的博客 689
上一篇: SQL必知必会——创建计算字段
下一篇: SQL必知必会——汇总数据
吴声子夜歌
博客等级 码龄9年 2688粉丝 2268原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值