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

news/2024/11/29 19:42:39/

目录

函数

        函数带来的问题

        可移植(portable)

        是否应该使用函数?

使用函数

        文本处理函数

        SOUNDEX 支持

        日期和时间处理函数

        数值处理函数


函数

        函数带来的问题

        与几乎所有DBMS 都等同地支持SQL 语句(如SELECT)不同,每一个DBMS 都有特定的函数。事实上,只有少数几个函数被所有主要的DBMS等同地支持。虽然所有类型的函数一般都可以在每个DBMS 中使用,但各个函数的名称和语法可能极其不同。为了说明可能存在的问题,表列出了3 个常用的函数及其在各个DBMS 中的语法:

        可移植(portable)

        所编写的代码可以在多个系统上运行。

        是否应该使用函数?

        现在,你面临是否应该使用函数的选择。决定权在你,使用或是不使用也没有对错之分。如果你决定使用函数,应该保证做好代码注释,以便以后你(或其他人)能确切地知道所编写的SQL 代码的含义。


使用函数

        文本处理函数

        表列出了一些常用的文本处理函数。

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

        SOUNDEX 支持

        Microsoft Access 和PostgreSQL 不支持SOUNDEX()。另外,如果在创建SQLite 时使用了SQLITE_SOUNDEX 编译时选项,那么SOUNDEX()在SQLite 中就可用。因为SQLITE_SOUNDEX 不是默认的编译时选项,所以多数SQLite 实现不支持SOUNDEX()。


        日期和时间处理函数

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

        Oracle的 to_char()函数用来提取日期的成分,to_number()用来将提取出的成分转换为数值。

SELECT order_num FROM Orders WHERE to_number(to_char(order_date, 'YYYY')) = 2012;

        完成相同工作的另一方法是使用BETWEEN 操作符:

SELECT order_num FROM Orders
WHERE order_date BETWEEN to_date('01-01-2012') AND to_date('12-31-2012');

        Oracle 的to_date()函数用来将两个字符串转换为日期。


        数值处理函数

        数值处理函数仅处理数值数据。这些函数一般主要用于代数、三角或几何运算,因此不像字符串或日期时间处理函数使用那么频繁。

        具有讽刺意味的是,在主要DBMS 的函数中,数值函数是最一致、最统一的函数。


http://www.ppmy.cn/news/39160.html

相关文章

企业级 AI 研发的正确姿势:开源 LLM + LoRA轻松提效

本文的阅读成本很低,不需要大量地先验 AI 知识。作为纯纯的软件工程师,我们发现:学懂基本的 AI Prompt 原理与模式,不懂 LLM (大语言模型)算法,你也可以轻易驾驭 LoRA (Low-Rank Ada…

php+mysql仓储进销存仓库管理系统

仓库的管理的操作自动化和信息的电子化,全面提高了仓库的管理水平。随着我国改革开放的不断深入,经济飞速的发展,企业要想生存、发展,要想在激烈的市场竞争中立于不败之地,没有现代化的管理是万万不行的,仓…

How to install nacos/nacos-server:v2.1.2-slim with docker

今天给大家介绍一下如何基于Docker的nacos/nacos-server:v2.1.2-slim镜像安装nacos 1、Data Source 我们需要从nacos的github官网下载nacos 2.12发布包 nacos-server-2.1.2.tar.gznacos-server-2.1.2.zip 这里以nacos-server-2.1.2.tar.gz为例来介绍,解压后我们…

PCB生产工艺流程五:PCB生产工艺流程的第3步,钻孔的分类及目的

PCB生产工艺流程五:PCB生产工艺流程的第3步,钻孔的分类及目的 今天第五期的内容就是详细讲述PCB工艺流程第三步——钻孔,忘记第二步的小伙伴看这里 PCB工艺流程第2步,你了解多少? 钻孔的目的 在板面上钻出层与层之间…

14届蓝桥杯Python总结

在比赛的时候大家头脑注意力都高度集中,比较紧绷, 我是不喜欢太紧绷的神经的,这时候电脑就夸得一下关机重启了,我当时真的想说关的好,休息一会(哈哈哈) 重启后我就继续做题,虽然出了…

AD学习记录

一、环境 1)优选项(语言、交互式、backup、取消重置位号、保存及载入DXPPrf配置文件) 2)工程创建(prjpcb schlib pcblib schdoc pcbdoc) 二、PCB库 1)原理图库中元件模型(元件边框、管脚、管脚名、管脚号) 2)电阻容模型创建(VGS设置栅格格点大小、移动管脚栅格格点100mil、…

gdb内存检查

内存检查 gcc选项 -fsanitizeaddress 检查内存泄漏检查堆溢出检查栈溢出检查全局内存溢出检查释放后再使用 示例代码 https://github.com/SimpleSoft-2020/gdbdebug/memcheck-section 检查内存泄漏 gdb memcheck-section -q检查堆溢出 15525ERROR: AddressSanitizer: he…

redis的对象是什么

前言:redis没有直接使用前面介绍的几种数据类型 sds、双端链表、字典、压缩列表、整数集合等等。 而是基于这些数据结构创建了一个对象系统,这个对象系统包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象。每种对象都用到了…