「MySQL」深入理解MySQL中常用的SQL函數

「MySQL」深入理解MySQL中常用的SQL函數

  • 窗口函數參考文章
  • 1. COALESCE 函數
  • 2. USING 函數
  • 3. LEAD 函數
  • 4. interval 函數
  • 5. INSTR 函數
  • 6. substring_index 函數
  • 7. LENGTH 函數和 CHAR_LENGTH 函數

窗口函數參考文章

SQL窗口函數

1. COALESCE 函數

COALESCE 函數的作用是從一組值中返回第一個非空(NULL)的值。如果所有的值都是 NULL,那么 COALESCE 函數會返回 NULL。

舉個例子,如果我們有一個表格包含了學生的姓名和昵稱,但有些學生沒有昵稱,我們可以使用 COALESCE 函數來選擇一個非空的名字作為顯示的名稱:

SELECT COALESCE(nickname, name) AS display_name
FROM students;

在這個例子中,如果 nickname 字段不為空,那么 display_name 將會使用昵稱;如果 nickname 字段為空,那么 display_name 將會使用姓名。

2. USING 函數

在 SQL 中,可以使用 USING 關鍵字來指定連接操作的列。當使用 JOIN 操作連接兩個表時,如果這兩個表中的連接列具有相同的名稱,可以使用 USING 關鍵字來簡化連接條件的書寫。
以下是使用 USING 關鍵字進行連接操作的示例:

SELECT *
FROM table1
JOIN table2 USING (common_column);

在上面的示例中,table1table2 是要連接的兩個表,它們都具有一個名為 common_column 的列。使用 USING 關鍵字,可以省略連接條件的重復列名,系統會自動匹配這兩個表中具有相同名稱的列進行連接,不能指定多個列。

3. LEAD 函數

LEAD() 是一種窗口函數,用于獲取當前行之后的行的值。它可以幫助你在查詢中訪問結果集中下一個行的數據,而無需實際改變結果集的順序。

以下是 LEAD() 函數的基本語法:

LEAD(expression, offset, default) OVER (PARTITION BY partition_column ORDER BY order_column)
  • expression: 要獲取的值的列或表達式。
  • offset: 指定要獲取的后續行的偏移量(默認為 1,表示下一行)。
  • default: 可選參數,指定當沒有后續行時要返回的默認值(如果不提供,則默認為 NULL)。
  • PARTITION BY partition_column: 可選子句,用于對結果集進行分區。
  • ORDER BY order_column: 指定確定行之間順序的列。

通過使用 LEAD() 函數,你可以輕松地訪問結果集中當前行之后的行的數據,從而執行各種分析和計算操作。在之前的示例中,我展示了如何在查詢中使用 LEAD() 函數來獲取用戶的下一個刷題日期。

4. interval 函數

在SQL中,INTERVAL 5 MINUTE表示一個時間間隔,具體意思是“5分鐘”。這個用法通常用于在SQL語句中對時間進行加減操作,比如計算時間差、增加時間等。

例如,在MySQL中,你可以使用INTERVAL關鍵字來對時間進行加減操作。下面是一個示例:

SELECT NOW() AS current_time,NOW() + INTERVAL 5 MINUTE AS after_5_minutes;

這個查詢會返回當前時間以及加上5分鐘后的時間。INTERVAL 5 MINUTE表示增加5分鐘。

5. INSTR 函數

INSTR 函數是 SQL 中用來查找字符串中子串的函數。它的語法如下:

INSTR(string, substring)

其中,string 是要查找的字符串,substring 是要查找的子串。函數返回 substringstring 中第一次出現的位置,如果 substring 不在 string 中,則返回 0。

以下是一個示例:

SELECT INSTR('hello world', 'world');

這個查詢會返回 7,因為子串 'world' 在字符串 'hello world' 中第一次出現的位置是 7。

在你的例子中,INSTR(comment,'是')+INSTR(comment,'試')+INSTR(comment,'報名') > 0 的含義是,如果 comment 字符串中包含子串 '是''試''報名' 中的任意一個,那么該表達式的值就為真(即大于0)。

6. substring_index 函數

SUBSTRING_INDEX 函數用于在字符串中查找并返回某個分隔符之前或之后的子串。該函數的語法如下:

SUBSTRING_INDEX(str, delim, count)
  • str 是要進行處理的字符串。
  • delim 是用作分隔符的字符或子串。
  • count 指定了要返回的子串在分隔符出現的次數。如果 count 為正數,函數將從左側開始查找;如果 count 為負數,函數將從右側開始查找。

例如,如果有字符串 'apple,banana,cherry',想要獲取逗號后的第一個內容 'banana',可以使用以下 SQL 查詢:

SELECT SUBSTRING_INDEX('apple,banana,cherry', ',', -1) AS result;

這個查詢將返回 'banana',因為它是逗號后的第一個內容。

7. LENGTH 函數和 CHAR_LENGTH 函數

在 SQL 中,LENGTH 函數和 CHAR_LENGTH 函數用于獲取字符串的長度,但它們之間有一些區別。

  1. LENGTH 函數:

    • LENGTH 函數返回字符串中的字符數或字節數,取決于數據庫的字符集編碼。
    • 對于英文字符或單字節字符集,LENGTH 函數返回字符串中的字符數。
    • 對于多字節字符集(如 UTF-8),LENGTH 函數返回字符串中的字節數,而不是字符數。
  2. CHAR_LENGTH 函數:

    • CHAR_LENGTH 函數返回字符串中的字符數,不受字符集編碼的影響。
    • 無論是單字節字符集還是多字節字符集,CHAR_LENGTH 函數都會返回字符串中的字符數。

例如,假設有一個包含中文字符的字符串 '你好,世界!',如果使用 LENGTHCHAR_LENGTH 函數來獲取其長度,結果可能如下:

SELECT LENGTH('你好,世界!') AS length_result, CHAR_LENGTH('你好,世界!') AS char_length_result;

在這個例子中,length_result 的值取決于數據庫的字符集編碼,而 char_length_result 的值將始終是 6,因為字符串中有 6 個字符。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/712465.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/712465.shtml
英文地址,請注明出處:http://en.pswp.cn/news/712465.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

瑞_Redis_Redis的Java客戶端

文章目錄 1 Redis的Java客戶端1.1 Jedis快速入門1.1.1 入門案例1.1.1.1 項目構建1.1.1.2 引入依賴1.1.1.3 建立連接1.1.1.4 釋放資源1.1.1.5 測試1.1.1.6 完整測試類代碼 1.1.2 Jedis連接池1.1.2.1 連接池工具類1.1.2.2 改造原始代碼 🙊 前言:本文章為瑞…

基于單片機的聲光控制節能燈設計

摘 要:在當今社會,節約用電是低碳生活的基本行為之一,但是一些公眾場所電力浪費現象依然存在,特別是長明燈、常亮屏等屢見不鮮,造成了嚴重的電力浪費。針對這種電力浪費現象,該文基于STC89C52單片機設計了一種聲光控制節能燈,利用光敏電阻、光信息及語音信號控制電路收集…

常用sql語句及其優化

文章目錄 介紹常用sql語句1. 數據查詢1.1 SELECT 語句1.2 DISTINCT 關鍵字1.3 WHERE 子句1.4 ORDER BY 子句1.5 LIMIT 關鍵字 2. 數據更新2.1 INSERT INTO 語句2.2 UPDATE 語句2.3 DELETE FROM 語句 3. 數據管理3.1 CREATE TABLE 語句3.2 ALTER TABLE 語句3.3 DROP TABLE 語句 …

藍橋輔導之管道

藍橋輔導之管道 核心思想&#xff1a;二分 二分時間 若t時刻成立 則之后也一定成立將mid時刻時每個閥門的水的流動區間加入對組 合并區間 最終判斷是否覆蓋全管道l1 && r m; #include <iostream>#include <cstring>#include <algorithm>#define…

批量自動加好友神器!微信快速擴友秘籍!

對于一些個人或者企業來說&#xff0c;傳統的人工添加好友方式往往會出現效率低下&#xff0c;費時費力的問題。那么&#xff0c;有沒有一種快速、便捷、安全的方式來解決這個問題呢&#xff1f;答案當然是肯定的&#xff0c;那就是通過使用微信管理系統來解決這一問題。 在微…

基于java+springboot景區行李寄存管理系統設計和實現

基于javaspringboot景區行李寄存管理系統設計和實現 博主介紹&#xff1a;多年java開發經驗&#xff0c;專注Java開發、定制、遠程、文檔編寫指導等,csdn特邀作者、專注于Java技術領域 作者主頁 央順技術團隊 Java畢設項目精品實戰案例《1000套》 歡迎點贊 收藏 ?留言 文末獲取…

5GC SBA架構

協議標準&#xff1a;Directory Listing /ftp/Specs/archive/23_series/23.501/ (3gpp.org) NF描述說明NSSFNetwork Slice Selection Function網絡切片選擇&#xff0c;根據UE的切片選擇輔助信息、簽約信息等確定UE允許接入的網絡切片實例。NEF Network Exposure Function網絡開…

疾控中心的污水采樣瓶用的是什么材質

疾控中心的污水采樣瓶采用的材質是聚乙烯或聚丙烯塑料。這種材質的污水采樣瓶具有耐腐蝕、耐高壓、無毒無味、重量輕、易于攜帶等優點。此外&#xff0c;這種材質的污水采樣瓶還可以在高溫下消毒&#xff0c;不會變形或破裂。 疾控中心的污水采樣瓶通常有不同的容積和形狀&…

Harbor高可用(haproxy和keepalived)

Harbor高可用&#xff08;haproxy和keepalived&#xff09; 文章目錄 Harbor高可用&#xff08;haproxy和keepalived&#xff09;1.Harbor高可用集群部署架構1.1 主機初始化1.1.1 設置網卡名和ip地址1.1.2 設置主機名1.1.3 配置鏡像源1.1.4 關閉防火墻1.1.5 禁用SELinux1.1.6 設…

SpringBoot 自定義映射規則resultMap association一對一

介紹 例&#xff1a;學生表&#xff0c;班級表&#xff0c;希望在查詢學生的時候一起返回該學生的班級&#xff0c;而一個實體類封裝的是一個表&#xff0c;如需要多表查詢就需要自定義映射。 表結構 班級表 學生表 SQL語句 SELECT a.id,a.name,a.classes,b.id classes…

Charles抓包 - 安裝、激活、證書配置

最近剛好又遇到了抓包的需求&#xff0c;之前一直使用 Fiddler 抓包&#xff0c;這幾年一直聽大家都在用 Charles 抓包&#xff0c;正好一起了解下&#xff08;一般建議掌握一種抓包方式即可&#xff0c;都可以解決同種需求場景&#xff09; 抓包 Fiddler抓包 Charles 下載、安…

[機器視覺]halcon應用實例 多ROI模板匹配

本示例是單ROI的功能擴展示例&#xff0c;多ROI.后面有空了將出用戶自定義ROI。 比單ROI增加ROI區域的連接和合并。還有for的實例應用。步驟同單ROI一樣。不懂的可以看一下單ROI文章。[機器視覺]halcon應用實例 單ROI模板匹配-CSDN博客 有需要的可以【點贊】【關注】【收藏】…

2024年新提出的算法|LEA愛情進化算法(Love Evolution Algorithm)

Love Evolution Algorithm: a stimulus–value–role theory-inspired evolutionary algorithm for global optimization 愛情進化算法Love Evolution Algorithm&#xff0c;LEA&#xff0c;于2024年2月發表在中科院3區SCI期刊 The Journal of Supercomputing。 1、簡介 本文提…

幸運星數(爺再也不想用pow了)

解法&#xff1a; 暴力 #include <iostream> #include <vector> using namespace std; #define endl \nint main() {ios::sync_with_stdio(false);cin.tie(0); cout.tie(0);int n;long long sum 0, a;cin >> n;for (int i 1; i < n; i) {a 1;for (in…

#python升級#CentOS 7 python升級到3.11.6

在 CentOS 7 上升級 Python 版本可能會比較復雜&#xff0c;因為 CentOS 7 默認安裝的是 Python 2.7&#xff0c;并且系統很多組件依賴于它。不過&#xff0c;可以通過以下步驟嘗試升級到 Python 3.11.6&#xff1a; 安裝必要的依賴&#xff1a; sudo yum install gcc openssl-…

洛谷P1015回文數

題目描述 若一個數&#xff08;首位不為零&#xff09;從左向右讀與從右向左讀都一樣&#xff0c;我們就將其稱之為回文數。 例如&#xff1a;給定一個十進制數 5656&#xff0c;將 5656 加 6565&#xff08;即把 5656 從右向左讀&#xff09;&#xff0c;得到 121121 是一個…

藍橋杯刷題2

1. 修建灌木 import java.util.Scanner;public class Main {public static void main(String[] args) {Scanner scan new Scanner(System.in);int n scan.nextInt();for (int i 1;i < n1;i){int distance Math.max(i-1,n-i);System.out.println(distance*2);}scan.close…

軟件設計師軟考題目解析12 --每日五題

想說的話&#xff1a;要準備軟考了。0.0&#xff0c;其實我是不想考的&#xff0c;但是吧&#xff0c;由于本人已經學完所有知識了&#xff0c;只是被學校的課程給鎖在那里了&#xff0c;不然早找工作去了。尋思著反正也無聊&#xff0c;就考個證玩玩。 本人github地址&#xf…

種花

分情況&#xff1a; 第一盆k種選擇&#xff0c;之后全部k-1種選擇 每次相乘結果對1e97取模 #include <iostream> #include <vector> #include <algorithm> using namespace std; #define endl \n const int N 1e9 7;int main() {ios::sync_with_stdio(f…

微信小程序iOS禁止上下拉顯示白邊

先上圖暴露出問題 iOS端這個頁面明明正好顯示的&#xff0c;非要能下拉上拉給顯示出來點白邊。這樣不就不好看了嘛。。 想了想是不是支持頁面下拉導致的&#xff0c;加入以下代碼到json文件中。 {"enablePullDownRefresh": false,"usingComponents": {} }…