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

devtools/2025/3/10 21:57:18/

一、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严格类型检查,需确保所有参数可转换为同一数据类型


http://www.ppmy.cn/devtools/166114.html

相关文章

基于单片机的智慧农业大棚系统(论文+源码)

1系统整体设计 经过上述的方案分析,采用STM32单片机为核心,结合串口通信模块,温湿度传感器,光照传感器,土壤湿度传感器,LED灯等硬件设备来构成整个控制系统。系统可以实现环境的温湿度检测,土壤…

学习工具的一天之(burp)

第一呢一定是先下载 【Java环境】:Java Downloads | Oracle 下来是burp的下载 Download Burp Suite Community Edition - PortSwigger 【下载方法二】关注的一个博主 【BurpSuite 安装激活使用详细上手教程 web安全测试工具】https://www.bilibili.com/video/BV…

Spark 3.0核心新特性解析与行业应用展望

Spark 3.0核心新特性解析与行业应用展望 一、自适应查询执行(Adaptive Query Execution, AQE) 作为Spark 3.0最具突破性的优化,AQE通过运行时动态调整执行计划,解决了传统静态优化的局限性。其核心技术突破体现在三方面: 1. 动态分区合并(Dynamically Coalescing Shuf…

为企业级AI交互系统OpenWebUI集成LDAP用户权限认证(2)

为企业级AI交互系统OpenWebUI集成LDAP用户权限认证(2) 本文介绍如何OpenWebUI系统集成LDAP认证服务,及其用户权限及用户组设置。 推荐超级课程: 本地离线DeepSeek AI方案部署实战教程【完全版】Docker快速入门到精通Kubernetes入门到大师通关课AWS云服务快速入门实战目录…

【Transformer优化】Transformer的局限在哪?

自2017年Transformer横空出世以来,它几乎重写了自然语言处理的规则。但当我们在享受其惊人的并行计算能力和表征能力时,是否真正理解了它的局限性?本文将深入探讨在复杂度之外被忽视的五大核心缺陷,并试图在数学维度揭示其本质。 …

[Pycharm]创建解释器

仅以此文章来记录自己经常脑子抽忘记的地方 有时候我们在建好了一个项目以后,想要更换解释器。以新建conda解释器为例。 一、conda解释器 1.选择setting 2.选择Add Local Interpreter 3.type选则conda。如果你之前已经有了conda环境,和我一样选择了Gen…

DeepSeek-R1:引领AI领域革新,MLA技术助力模型迁移

摘要 DeepSeek的MLA技术实现了大型机器学习模型的轻松迁移,其突破性产品DeepSeek-R1凭借显著降低的训练和推理成本,吸引了业界广泛关注。MLA技术的核心在于创新性的低秩压缩键值缓存架构,使得推理成本大幅减少,仅为同等性能大型模…

C++模版vector模拟实现

目录 vector类模板结构介绍 迭代器部分 函数介绍 完整代码 一、vector类模板结构介绍 该vector类模板包含以下成员函数: begin()和end():返回迭代器,用于指向vector的起始和结束位置。cbegin()和cend():返回常量迭代器&…