数据库常用函数(不定时更新中)

一、Oracle数据库中涉及的函数:

1.TRIM():

作用:

在 Oracle 数据库中,TRIM() 函数主要用于去除字符串首尾的空格或指定字符。

语法:

TRIM([LEADING|TRAILING|BOTH] [trim_char FROM] string)

  • 默认行为TRIM(string) 等价于 TRIM(BOTH ' ' FROM string),即删除首尾空格

  • 定制化修剪:可指定删除方向(前导/后导/双向)和特定字符

2.NVL():

作用:

NVL() 是 Oracle 数据库中的一个经典函数,用于处理空值(NULL)。

语法

NVL(expr1, expr2)
  • 若 expr1 不为 NULL → 返回 expr1 的值

  • 若 expr1 为 NULL → 返回 expr2 的值
    核心目的:将 NULL 转换为业务可理解的默认值。

3.NVL2():

作用:

NVL2() 是 Oracle 数据库特有的三参数空值处理函数,相比 NVL() 提供了更精细的逻辑控制。

语法:

NVL2(expr, value_if_not_null, value_if_null)
  • 行为逻辑

    • 当 expr 不为 NULL → 返回第二个参数 value_if_not_null

    • 当 expr 为 NULL → 返回第三个参数 value_if_null

  • 强制返回:无论 expr 是否为空,必返回其中一个值(无传递 NULL 的可能)

与 NVL() 对比:

场景NVL2()NVL()
参数数量32
返回值逻辑非空/空分支明确单默认值替换
空值处理可返回非默认值只能返回固定默认值
典型用例条件分支明确的空值转换简单空值替换

4.COALESCE() :

作用:

COALESCE() 是 SQL 中处理 多字段空值 的核心函数,相比 NVL() 具有更强大的灵活性。

语法:

COALESCE(expr1, expr2, expr3, ..., exprN)
  • 行为:返回参数列表中第一个非 NULL 的值

  • 全为 NULL 时:返回 NULL

  • 参数数量:至少 2 个,最多数据库实现通常支持 100+ 参数(具体取决于数据库)

与 NVL() 对比:

场景COALESCE()NVL()
参数数量多参数 (>2)仅 2 参数
标准兼容性SQL 标准Oracle 特有
数据类型转换自动类型兼容检查需显式类型匹配
典型用例多字段备选值单字段默认值

性能优化要点:

  1. 短路特性
    COALESCE 按参数顺序执行,首个非 NULL 值出现后立即返回,后续表达式不再计算。应把高概率出现的条件前置。

  2. 索引利用
    在 WHERE 条件中使用时,需注意是否会导致索引失效:

    -- 优化前(可能导致全表扫描)
    WHERE COALESCE(indexed_column, 'N/A') = 'target'
    
    -- 优化后(利用索引)
    WHERE indexed_column = 'target' OR (indexed_column IS NULL AND 'target' = 'N/A')

  3. 数据类型堆叠
    当参数类型不一致时,数据库会尝试隐式转换,可能引发意外结果:

    COALESCE('123', 456) -- 在 PostgreSQL 中报错,需显式转换
    COALESCE(CAST('123' AS INT), 456) -- 安全写法

跨数据库差异:

数据库特性
Oracle从 9i 开始支持,参数最多 254 个
MySQL8.0+ 原生支持,MariaDB 10.0+ 支持
SQL Server2008+ 支持,与 ISNULL() 性能相近
PostgreSQL严格类型检查,需确保所有参数可转换为同一数据类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/983881.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高效编程指南:PyCharm与DeepSeek的完美结合

DeepSeek接入Pycharm 前几天DeepSeek的充值窗口又悄悄的开放了,这也就意味着我们又可以丝滑的使用DeepSeek的API进行各种辅助性工作了。本文我们来聊聊如何在代码编辑器中使用DeepSeek自动生成代码。 注:本文适用于所有的JetBrains开发工具&#xff0c…

豆包大模型 MarsCode AI 刷题专栏 004

007.创意标题匹配问题 难度:易 问题描述 在广告平台中,为了给广告主一定的自由性和效率,允许广告主在创造标题的时候以通配符的方式进行创意提交。线上服务的时候,会根据用户的搜索词触发的 bidword 对创意中的通配符&#xff…

Blueprint —— Blueprint Editor(二)

目录 一,Blueprint Header View 二,Blueprint Bookmarks 三,Blueprint Editor Defaults Tab 获取类默认值 一,Blueprint Header View Blueprint Header View 可将虚幻引擎蓝图类和蓝图结构体转换为C代码;在转换过程…

JVM组成面试题及原理

Java Virtual Machine(JVM)是Java程序的运行环境(java二进制字节码的运行环境) 好处: 一次编写,到处运行自动内存管理,垃圾回收机制 JVM由哪些部分组成,运行流程是什么?…

解决在windows中docker拉取镜像出现的问题

解决在windows中docker拉取镜像出现的问题 docker pull minio/minio 出现报错: Error response from daemon: Get "https://registry-1.docker.io/v2/": net/http: request canceled while waiting for connection (Client.Timeout exceeded while await…

MySQL基本建表操作

目录 1,创建数据库db_ck 1.1创建表 1.2 查看创建好的表 2,创建表t_hero 2.1 先进入数据库Db_Ck 2.1.1 这里可以看是否进入数据库: 2.2 创建表t_Hero 2.2.1 我们可以先在文本文档里面写好然后粘贴进去,因为直接写的话,错了要重新开始 …

使用Arduino和ESP8266进行基于物联网的垃圾箱监控

使用 Arduino 和 ESP8266 的基于 IOT 的垃圾箱监控系统 在这个 DIY 中,我们将制作一个基于 IOT 的垃圾箱/垃圾监控系统,该系统将通过网络服务器告诉我们垃圾桶是空的还是满的,并且您可以通过互联网从世界任何地方了解“垃圾桶”或“垃圾箱”的状态。它将非常有用,可以安装…

【Academy】HTTP 请求走私 ------ HTTP request smuggling

HTTP 请求走私 ------ HTTP request smuggling 1. 什么是 HTTP 请求走私?2. HTTP 请求走私漏洞是如何产生的?3. 如何执行 HTTP 请求走私攻击3.1 CL.TE 漏洞3.2 TE.CL 漏洞3.3 TE.TE 行为:混淆 TE 标头 4. 如何识别和确认 HTTP 请求走私漏洞4.…

元脑服务器的创新应用:浪潮信息引领AI计算新时代

浪潮信息的元脑 R1 服务器现已全面支持开源框架 SGLang,能够在单机环境下实现 DeepSeek 671B 模型的高并发性能,用户并发访问量超过1000。通过对 SGLang 最新版本的深度适配,元脑 R1 推理服务器在运行高性能模型时,展现出卓越的处…

蓝桥备赛(13)- 链表和 list(下)

一、动态链表 - list (了解) new 和 delete 是非常耗时的操作 在算法比赛中,一般不会使使用 new 和 delete 去模拟实现一个链表。 而且STL 里面的 list 的底层就是动态实现的双向循环链表,增删会涉及 new 和 delete,效率不高,竞赛…

【VUE2】第二期——生命周期及工程化

目录 1 生命周期 1.1 介绍 1.2 钩子 2 可视化图表库 3 脚手架Vue CLI 3.1 使用步骤 3.2 项目目录介绍 3.3 main.js入口文件代码介绍 4 组件化开发 4.1 组件 4.2 普通组件注册 4.2.1 局部注册 4.2.2 全局注册 1 生命周期 1.1 介绍 Vue生命周期:就是…

正则表达式梳理(基于python)

正则表达式(regular expression)是一种针对字符串匹配查找所定义的规则模式,独立于语言,但不同语言在实现上也会存在一些细微差别,下面基于python对常用的相关内容进行梳理。 文章目录 一、通用常识1.通配符ps.反义 2.…

《C++ 构造、拷贝构造与析构函数:对象的诞生、克隆与消逝之旅》

类的6个默认成员函数 构造函数 是对一个对象实例化时的初始化 例如在C语言中写的堆的时候要初始化StackInit,而c祖师爷写的构造函数本质上就是自动调用初始化。 构造函数默认构造函数自己写的(符合规定的显示表达式) 注:一般情况下…

使用服务器搭建无门槛ChatGPT WEB应用LobeChat

一、服务器实例配置 ‌实例选型‌ ‌推荐配置‌:‌2核4GB内存‌,保障AI推理和并发访问的流畅性‌67。‌操作系统‌:选择 ‌Ubuntu 22.04 LTS‌,适配Docker环境与LobeChat依赖库‌23。‌安全组规则‌:开放以下端口&…

C/S架构与B/S架构

一、定义与核心区别 C/S架构(Client/Server,客户端/服务器) 客户端需安装专用软件(如QQ、企业ERP系统),直接与服务器通信。服务器端通常包括数据库和业务逻辑处理1。特点:客户端承担部分计算任务…

鸿蒙Next-应用检测、安装以及企业内部商店的实现

一、企业内部应用检测和更新升级 A应用检测是否安装B应用 canOpenApp():boolean{ try { let link schB://com.example.test/open; // 替换成你目标应用的link串儿 let canOpen bundleManager.canOpenLink(link); console.log("canOpen:"canOpen…

车载网络测试-DBC文件解读

目录 1 背景2 DBC结构2.1 Networks2.2 ECUs(Electronic Control Units)2.3 Network Nodes2.4 Message(报文)2.4.1 Message定义、作用、示例2.4.2 报文Attribute(属性)2.4.2.1 常见的报文Attributes2.4.2.2 …

《A++ 敏捷开发》- 18 软件需求

需求并不是关于需求 (Requirements are not really about requirements) 大家去公共图书馆寄存物品,以前都是扫二维码开箱,有些图书馆升级了使用指纹识别。 “是否新方法比以前好?”我问年轻的开发人员。 “当然用指纹识别好。新技术&#x…

SQL经典查询

查询不在表里的数据,一张学生表,一张学生的选课表,要求查出没有选课的学生? select students.student_name from students left join course_selection on students.student_idcourse_selection.student_id where course_selecti…

大语言模型进化论:从达尔文到AI的启示与展望

文章大纲 引言大语言模型中的“进化论”思想体现遗传变异过度繁殖和生存斗争大模型“过度繁殖”与“生存竞争”机制解析**一、过度繁殖:技术迭代的指数级爆发****二、生存竞争:计算资源的达尔文战场****三、生存竞争胜出关键要素****四、行业竞争格局演化趋势**核心结论自然选…