SQL学习-常用函数

 常见SQL函数使用

(注意:不同的数据库类型使用的语法不同)

以下是MySQL和PostgreSQL在实现替换、抽取、拼接、分列四个常见字符串操作功能时的核心区别总结,按功能分类对比:


1. 替换(Replace)

功能描述MySQLPostgreSQL关键区别
简单替换REPLACE(str, old_str, new_str)REPLACE(str, old_str, new_str)语法相同
正则替换REGEXP_REPLACE(str, pattern, repl)REGEXP_REPLACE(str, pattern, repl)PostgreSQL支持更强大的正则引擎
示例SELECT REPLACE('abc', 'a', 'X'); → XbcSELECT REGEXP_REPLACE('a1b2', '\d', 'X'); → aXbXPostgreSQL正则语法更灵活

2. 抽取(Extract)

功能描述MySQLPostgreSQL关键区别
子串截取SUBSTRING(str, start, length)
SUBSTR(str, start, length)
SUBSTRING(str FROM start FOR length)PostgreSQL语法更接近SQL标准
正则抽取REGEXP_SUBSTR(str, pattern)SUBSTRING(str FROM pattern)PostgreSQL直接集成正则到SUBSTRING
示例SELECT SUBSTRING('Hello', 2, 3); → ellSELECT SUBSTRING('a1b2' FROM '\d+'); → 1PostgreSQL支持正则抽取更简洁

3. 拼接(Concatenation)

功能描述MySQLPostgreSQL关键区别
多字符串拼接CONCAT(str1, str2, ...)
自动忽略NULL
CONCAT(str1, str2, ...)
NULL参与返回NULL
或用||操作符
NULL处理不同
MySQL忽略NULL,Pg需用||CONCAT_WS
带分隔符拼接CONCAT_WS(separator, str1, str2)CONCAT_WS(separator, str1, str2)语法相同
示例SELECT CONCAT('a', NULL, 'b'); → abSELECT 'a' || NULL || 'b'; → NULLPostgreSQL需显式处理NULL

4. 分列(Split)

功能描述MySQLPostgreSQL关键区别
按分隔符拆分SUBSTRING_INDEX(str, delim, count)SPLIT_PART(str, delim, index)函数名不同,参数逻辑相似
拆分为多行需结合JSON_TABLE(MySQL 8.0+)UNNEST(STRING_TO_ARRAY(str, delim))PostgreSQL原生支持数组拆分
示例SELECT SUBSTRING_INDEX('a,b,c', ',', 2); → a,bSELECT SPLIT_PART('a,b,c', ',', 2); → bPostgreSQL索引从1开始

关键差异总结

  1. 正则表达式支持

    • PostgreSQL的正则引擎更强大(如\m单词边界、\p{Unicode属性}等)。

    • MySQL需使用REGEXP_前缀函数(如REGEXP_REPLACE)。

  2. NULL处理逻辑

    • MySQL的CONCAT()自动忽略NULL,PostgreSQL的CONCAT()遇NULL返回NULL,需用\|\|COALESCE处理。

  3. 函数命名与语法

    • 分列操作:MySQL用SUBSTRING_INDEX,PostgreSQL用SPLIT_PART

    • 正则抽取:PostgreSQL直接扩展SUBSTRING,MySQL需REGEXP_SUBSTR

  4. 数据类型扩展

    • PostgreSQL原生支持数组类型(STRING_TO_ARRAY)和JSON拆分(json_array_elements),MySQL需依赖JSON函数。


使用建议

  • 简单操作:优先使用标准SQL函数(如REPLACESUBSTRING)。

  • 复杂正则:PostgreSQL更适合(如多模式匹配)。

  • 分列需求:PostgreSQL的SPLIT_PART和数组操作更直观。

  • 版本注意:MySQL 8.0+才支持完整正则函数(如REGEXP_REPLACE)。

所以在使用时需要根据不同的去调整sql代码(建议去相应的官网查询) 

字段类型转换

 

这里补一个python中的常见函数类型转换

常用转换函数总结

目标类型转换函数示例
intint()int("123") → 123
floatfloat()float("3.14") → 3.14
strstr()str(100) → "100"
boolbool()bool(0) → False
listlist()list((1,2)) → [1,2]
tupletuple()tuple([1,2]) → (1,2)
dictdict()dict([('a',1)]) → {'a':1}

 

例题:

 case where使用样例:

case where的不同顺序会有不同结果

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

rt-linux下的cgroup cpu的死锁bug

一、背景 rt-linux系统有其非常大的实时性的优势,但是与之俱来的是该系统上有一些天然的缺陷。由于rt-linux系统允许进程在内核态执行的逻辑里,在持锁期间,甚至持spinlock锁期间,都能被其他进程抢占。这一特性能带来实时性的好处…

java—12 kafka

目录 一、消息队列的优缺点 二、常用MQ 1. Kafka 2. RocketMQ 3. RabbitMQ 4. ActiveMQ 5. ZeroMQ 6. MQ选型对比 适用场景——从公司基础建设力量角度出发 适用场景——从业务场景角度出发 四、基本概念和操作 1. kafka常用术语 2. kafka常用指令 3. 单播消息&a…

14【模块学习】74HC595:使用学习

74HC595 1、74HC595简介2、代码演示2.1、驱动8位流水灯 3、74HC595级联3.1、驱动16位流水灯3.2、驱动8位数码管3.3、驱动8x8点阵屏幕3.4、8x8点阵屏幕滚动显示 1、74HC595简介 在51单片机中IO引脚资源十分的紧缺,所以常常需要使用75HC595芯片进行驱动那些需要占用多…

JAVA后端开发常用的LINUX命令总结

一、Linux常用命令大全(2025年最新版) 常用 Linux 命令 文件和目录管理: cd:用于切换当前工作目录,如cd /home/user。mkdir:创建新目录,mkdir -p /home/user/mydir可递归创建多级目录。pwd&am…

uniapp-商城-40-shop 购物车 选好了 进行订单确认4 配送方式3 地址编辑

前面说了配送 和地址页面 当地址页面为空或需要添加地址时&#xff0c;需要添加地址。 我的地址页面有个按钮 就是添加地址 点击 添加地址 按钮 后&#xff0c;就会跳转到地址添加的页面 1、添加地址页面 2、添加地址文件夹以及文件的创建 3、添加地址的代码 <template…

现场问题排查-postgresql某表索引损坏导致指定数据无法更新影响卷宗材料上传

问题现象 今天突然被拉进一个群&#xff0c;说某地区友商推送编目结果报错&#xff0c;在我们自己的卷宗系统上传材料也一直转圈&#xff0c;也删除不了案件卷宗&#xff0c;重置模板也没用&#xff0c;只有个别案件有问题。虽然这事儿不属于我负责&#xff0c;但还是抽时间给…

Redis01-基础-入门

零、文章目录 Redis01-基础-入门 1、认识 NoSQL NoSQL 知识请参考&#xff1a;https://blog.csdn.net/liyou123456789/article/details/132612444 2、认识 Redis &#xff08;1&#xff09;简介 Redis&#xff08;Remote Dictionary Server&#xff0c;远程字典服务&…

【嘉立创EDA】如何在更新或转换原理图到PCB时,保留已有布局器件

文章路标👉 :one: 文章解决问题:two: 主题内容:three: 参考方法be end..1️⃣ 文章解决问题 操作环境:嘉立创EDA专业版 V2.2.37 本文使用嘉立创EDA,描述在更新或转换原理图到PCB时,保留已有布局器件的方法。本文将此过程记录,以供有需要的读者参考。 2️⃣ 主题内容 …

03 APQC PROCESS CLASSIFICATION FRAMEWORK (PCF)

APQC流程分类框架&#xff08;APQC Process Classification Framework, PCF&#xff09;最初由美国生产力与质量中心&#xff08;American Productivity & Quality Center, APQC&#xff09;开发&#xff0c;旨在用于跨组织的流程性能基准比较。现在&#xff0c;它也常被用…

分析型数据库入门指南:如何选择适合你的实时分析工具?

一、什么是分析型数据库&#xff1f;为什么需要它&#xff1f; 据Gartner最新报告显示&#xff0c;超过75%的企业现已在关键业务部门部署了专门的分析型数据库&#xff0c;这一比例还在持续增长。 随着数据量呈指数级增长&#xff0c;传统数据库已无法满足复杂分析场景的需求…

body Param Query 三个 不同的入参 分别是什么意思 在前端 要怎么传 这三种不同的参数

在 NestJS 中&#xff0c;Body()、Param() 和 Query() 用于处理不同类型的请求参数。以下是它们的含义及前端传递方式&#xff1a; Body()&#xff1a;请求体参数 • 含义&#xff1a;用于获取请求体中的数据&#xff08;如 POST/PUT 请求中提交的 JSON、表单数据等&#xff09…

神经网络(自己记录)

一、神经网络基础 5分钟-通俗易懂 - 神经网络 反向传播算法&#xff08;手算&#xff09;_哔哩哔哩_bilibili 二、GAT

Redis Slot 槽位分片具体案例

‌键值槽位分配案例‌ 当执行 SET {kaigejava}k1 v1 时&#xff0c;Redis 会提取 {} 内的有效部分 kaigejava&#xff0c;通过 CRC16 算法计算哈希值&#xff0c;再对 16384 取余得到槽位。例如&#xff1a; 若计算结果为 1495&#xff0c;则该键会被分配到槽位 1495 对应的节…

【多模态模型】跨模态智能的核心技术与应用实践

目录 前言技术背景与价值当前技术痛点解决方案概述目标读者说明 一、技术原理剖析核心概念图解核心作用讲解关键技术模块说明技术选型对比 二、实战演示环境配置要求核心代码实现&#xff08;CLIP图像-文本检索&#xff09;运行结果验证 三、性能对比测试方法论量化数据对比结果…

final static 中是什么final static联合使用呢

final static 联合使用详解 final 和 static 在 Java 中经常一起使用&#xff0c;主要用来定义类级别的常量。这种组合具有两者的特性&#xff1a; 基本用法 public class Constants {// 典型的 final static 常量定义public static final double PI 3.141592653589793;pub…

1.1 道路结构特征

1.1 道路结构特征 1.城市道路分类 道路网的地位、交通功能、沿线的服务功能。快速路 15 30主干路 15 30次干路 15 20支路 10 20 10(20)沥青路面、水泥混凝土路面、砌块路面沥青路面:沥青混凝土、沥青贯入式、沥青表面处治。沥青混凝土各种等级、沥青贯入式和沥青表面处治支路…

C++如何使用调试器(如GDB、LLDB)进行程序调试保姆级教程(2万字长文)

C++作为一门高性能、接近底层的编程语言,其复杂性和灵活性为开发者提供了强大的能力,同时也带来了更高的调试难度。与一些高级语言不同,C++程序往往直接操作内存,涉及指针、引用、多线程等特性,这些都可能成为错误的温床。例如,一个未初始化的指针可能导致程序崩溃,而一…

vite+vue构建的网站项目localhost:5173打不开

原因&#xff1a;关掉了cmd命令提示符&#xff0c;那个端口就没有被配置上&#xff0c;打开就是这样的。 解决方法&#xff1a;重新在工作目录下打开cmd&#xff0c;输入npm run dev重新启动项目。 重新出现这样的界面说明已经成功启动项目&#xff0c;再次在浏览器中刷新并输入…

自主可控鸿道Intewell工业实时操作系统

鸿道Intewell工业实时操作系统是东土科技旗下科东软件自主研发的新一代智能工业操作系统&#xff0c;以下是相关介绍&#xff1a; 系统架构 -Intewell-C全实时构型&#xff1a;设备上只运行自研RTOS的全实时系统&#xff0c;适用于有功能安全认证需求的实时控制场景&#xf…

将大语言模型(LLM)应用于自动驾驶(ADAS)中的几个方向,及相关论文示例

主要方法集中在如何利用LLM的强大推理能力和语言理解能力来增强自动驾驶系统的感知、决策和规划能力。以下是几种典型的方法和思路&#xff1a; 1. 基于LLM的驾驶决策与规划 方法&#xff1a;将LLM作为驾驶决策的核心模块&#xff0c;利用其强大的推理能力生成驾驶行为或轨迹…