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.pswp.cn/bicheng/78688.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/78688.shtml
英文地址,請注明出處:http://en.pswp.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;利用其強大的推理能力生成駕駛行為或軌跡…