MySQL數據庫-字符串函數詳解

前言

MySQL數據庫提供了多種不同類型的函數,用于處理字符串、日期、數值等數據類型,以及實現條件、聚合等操作,下面我們主要介紹字符串函數

CONCAT()

函數 CONCAT() 可用于將多個字符串連接在一起。

示例:

SELECT CONCAT('Hello', ' ', 'World') AS result;
-- Output: Hello World

SUBSTRING()

函數 SUBSTRING() 可用于從字符串中提取子串。

示例:

SELECT SUBSTRING('Welcome to MySQL', 3, 7) AS result;
-- Output: lcome t

?CHAR_LENGTH()

函數 CHAR_LENGTH() 用于返回字符的長度(以字符個數為單位)。

示例:

SELECT CHAR_LENGTH('MySQL') AS result;
-- Output: 5

?LOWER() / UPPER()

函數 LOWER() 和 UPPER() 可用于將字符串轉換為小寫和大寫。

示例:

SELECT LOWER('Hello') AS result1, UPPER('World') AS result2;
-- Output: hello, WORLD

TRIM()

函數 TRIM() 可用于去除字符串兩端的空格或指定的字符。

示例:

SELECT TRIM('   Hello   ') AS result;
-- Output: Hello

REPLACE()

函數 REPLACE() 可用于替換字符串中的子串。

示例:

SELECT REPLACE('Hello World', 'World', 'MySQL') AS result;
-- Output: Hello MySQL

LENGTH()

函數 LENGTH() 返回字符串的長度(以字節為單位)。

示例:

SELECT LENGTH('MySQL') AS result;
-- Output: 5

INSTR()

函數 INSTR() 用于查找子串在字符串中第一次出現的位置。

示例:

SELECT INSTR('Hello World', 'World') AS result;
-- Output: 7

INSERT()

函數 INSERT() 可以將一個字符串插入到另一個字符串的指定位置。

示例:

SELECT INSERT('Hello World', 7, 0, 'MySQL ') AS result;
-- Output: Hello MySQL World

CONCAT_WS()

函數 CONCAT_WS() 可用于將多個字符串以指定的分隔符連接在一起。

示例:

SELECT CONCAT_WS('-', '2023', '08', '17') AS result;
-- Output: 2023-08-17

LPAD() / RPAD()

函數 LPAD() 和 RPAD() 可將字符串填充到指定的長度。

示例:

SELECT LPAD('Hello', 10, '*') AS result1, RPAD('World', 10, '*') AS result2;
-- Output: ****Hello, World*****

LEFT() / RIGHT()

函數 LEFT() 和 RIGHT() 可用于從字符串的左側或右側提取指定長度的子串。

示例:

SELECT LEFT('MySQL', 3) AS result1, RIGHT('MySQL', 2) AS result2;
-- Output: MyS, L

REVERSE()

函數 REVERSE() 可以將字符串反轉。

示例:

SELECT REVERSE('Hello') AS result;
-- Output: olleH

MID()

函數 MID() 可以從指定位置開始提取指定長度的子串。

示例:

SELECT MID('MySQL', 2, 3) AS result;
-- Output: ySQ

LOCATE()

函數 LOCATE() 可以查找子串在字符串中第一次出現的位置。

示例:

SELECT LOCATE('World', 'Hello World') AS result;
-- Output: 7

CONCAT_NULL_YIELDS_NULL

變量 CONCAT_NULL_YIELDS_NULL 可以控制連接操作中 NULL 值的處理。當設置為 ON(默認值)時,任何與 NULL 進行連接的操作都將結果置為 NULL。

示例:

SET CONCAT_NULL_YIELDS_NULL = OFF;
SELECT CONCAT('Hello', NULL) AS result;
-- Output: Hello

FIND_IN_SET()

函數 FIND_IN_SET() 可以找到字符串在逗號分隔的字符串列表中的位置。

示例:

SELECT FIND_IN_SET('MySQL', 'SQL,MySQL,Database') AS result;
-- Output: 2

FORMAT()

函數 FORMAT() 可以將數字格式化為帶有逗號分隔的字符串。

示例:

SELECT FORMAT(12345.67, 2) AS result;
-- Output: 12,345.67

REGEXP()

函數 REGEXP() 可以使用正則表達式進行模式匹配。

示例:

SELECT 'Hello' REGEXP '^H' AS result;
-- Output: 1 (表示匹配)

UCASE() / LCASE()

函數 UCASE() 和 LCASE() 可用于將字符串轉換為大寫和小寫。

示例:

SELECT UCASE('hello') AS result1, LCASE('WORLD') AS result2;
-- Output: HELLO, world

????????

STRCMP()

函數 STRCMP() 可用于比較兩個字符串。

示例:

SELECT STRCMP('Hello', 'Hello') AS result;
-- Output: 0 (表示相等)

SUBSTRING_INDEX()

函數 SUBSTRING_INDEX() 可用于從字符串中提取子串,基于指定的分隔符與出現次數。

示例:

SELECT SUBSTRING_INDEX('www.example.com', '.', 2) AS result;
-- Output: www.example

TRIM()

函數 TRIM() 可用于去除字符串兩端的空格或指定的字符。

示例:

SELECT TRIM('   Hello   ') AS result;
-- Output: Hello

STR_TO_DATE() / DATE_FORMAT()

函數 STR_TO_DATE() 可以將字符串轉換為日期,并且可以使用 DATE_FORMAT() 將日期格式化為字符串。

示例:

SELECT STR_TO_DATE('2023-08-17', '%Y-%m-%d') AS result1, DATE_FORMAT(NOW(), '%Y-%m-%d') AS result2;
-- Output: 2023-08-17, 當前日期

HEX()

函數 HEX() 可以將字符串轉換為十六進制格式。

示例:

SELECT HEX('Hello') AS result;
-- Output: 48656C6C6F

ASCII()

函數 ASCII() 可以返回字符的 ASCII 值。

示例:

SELECT ASCII('A') AS result;
-- Output: 65

REPEAT()

函數 REPEAT() 可以將字符串重復指定次數。

示例:

SELECT REPEAT('MySQL', 3) AS result;
-- Output: MySQLMySQLMySQL

CONCAT_WS()

函數 CONCAT_WS() 可用于將多個字符串以指定的分隔符連接在一起。

示例:

SELECT CONCAT_WS('-', '2023', '08', '17') AS result;
-- Output: 2023-08-17

CONCAT()

函數 CONCAT() 可用于將多個字符串連接在一起。

示例:

SELECT CONCAT('Hello', ' ', 'World') AS result;
-- Output: Hello World

SOUNDEX()

函數 SOUNDEX() 可以返回字符串的音標編碼。

示例:

SELECT SOUNDEX('Hello') AS result;
-- Output: H400

FIELD()

函數 FIELD() 可以返回字符串在逗號分隔的列表中的位置。

示例:

SELECT FIELD('MySQL', 'SQL,MySQL,Database') AS result;
-- Output: 2

ELT()

函數 ELT() 可以返回指定位置的字符串。

示例:

SELECT ELT(2, 'Apple', 'Banana', 'Cherry') AS result;
-- Output: Banana

MID()

函數 MID() 可以從指定位置開始提取指定長度的子串。

示例:

SELECT MID('MySQL', 2, 3) AS result;
-- Output: ySQ

BINARY()

函數 BINARY() 可以將字符串轉換為二進制字符串。

示例:

SELECT BINARY('Hello') AS result;
-- Output: 48656C6C6F

REGEXP_REPLACE()

函數 REGEXP_REPLACE() 可以使用正則表達式進行字符串替換。

示例:

SELECT REGEXP_REPLACE('Hello World', 'Wo*', '') AS result;
-- Output: Hello rld

REVERSE()

函數 REVERSE() 可以反轉字符串。

示例:

SELECT REVERSE('Hello World') AS result;
-- Output: dlroW olleH

FIND_IN_SET()

函數 FIND_IN_SET() 可用于在逗號分隔的列表中查找字符串的位置。

示例:

SELECT FIND_IN_SET('MySQL', 'SQL,MySQL,Database') AS result;
-- Output: 2

UNHEX()

函數 UNHEX() 可以將十六進制字符串轉換為二進制數據。

示例:

SELECT UNHEX('48656C6C6F') AS result;
-- Output: Hello

OCT()

函數 OCT() 可以將十進制數轉換為八進制數。

示例:

SELECT OCT(50) AS result;
-- Output: 62

HEX()

函數 HEX() 可以將數字轉換為十六進制格式。

示例:

SELECT HEX(255) AS result;
-- Output: FF

?后語

MySQL字符串函數提供了許多強大的功能和優點,使得在處理字符串數據時更加方便和高效。以下是MySQL字符串函數的一些優點:

  1. 字符串操作和轉換: MySQL字符串函數可以執行各種字符串操作,如連接字符串、提取子字符串、字符串替換、字符串轉換為大寫或小寫等。這使得在數據庫層面上進行字符串操作更加方便和高效,而無需在應用程序中處理。

  2. 數據整理和清洗: 字符串函數可用于數據的整理和清洗。例如,TRIM函數可以去除字符串兩端的空格或指定的字符,而REPLACE函數可以輕松替換字符串中的某個子串。這使得處理和準備數據變得更加簡單和可控。

  3. 字符串匹配和搜索: MySQL字符串函數提供了強大的字符串匹配和搜索功能。函數如LOCATE、REGEXP、FIND_IN_SET等可用于查找特定字符串、正則表達式匹配、在逗號分隔的列表中查找字符串等。這對于數據查詢和篩選非常有用。

  4. 格式化和轉換: 字符串函數可用于格式化和轉換數據。例如,DATE_FORMAT函數可以將日期轉換為指定格式的字符串,STR_TO_DATE函數可以將字符串解析為日期類型。這些轉換功能對于數據報表生成和跨平臺數據交互非常有幫助。

  5. 性能優化: 使用MySQL內置的字符串函數可以優化查詢性能。在數據庫層面上進行字符串操作和轉換通常比在應用程序中進行更高效,特別是當涉及到大量數據處理時。

  6. 可嵌套和組合: MySQL字符串函數可以嵌套和組合使用,以實現更復雜的字符串操作。這使得在一個函數調用中執行多個操作成為可能,簡化了編寫復雜查詢和處理復雜字符串邏輯的過程。

總的來說,MySQL字符串函數提供了豐富的功能和靈活性,可以幫助簡化代碼、提高性能,并使得處理和操作字符串數據更加方便和高效。

目前先舉例這些關于字符串函數,如大家有補充,歡迎大家下面評論!

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

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

相關文章

C++ STL stack queue

目錄 一.stack 介紹 二.stack 使用 三.stack 模擬實現 普通版本: 適配器版本: 四.queue的介紹 五. queue使用 六.queue模擬實現 七.deque介紹 1.容器適配器 2.deque的簡單介紹 3.deque的缺陷 4.為什么選擇deque作為stack和queue的底層默認容…

System.Text.Encoding不同字符編碼之間進行轉換

System.Text.Encoding 是 C# 中用于處理字符編碼和字符串與字節之間轉換的類。它提供了各種靜態方法和屬性,用于在不同字符編碼之間進行轉換,以及將字符串轉換為字節數組或反之。 在處理多語言文本、文件、網絡通信以及其他字符數據的場景中&#xff0c…

Spring Boot 獲取前端參數

Spring Boot 獲取前端參數 在開發 Web 應用程序時,前端參數是非常重要的。Spring Boot 提供了多種方法來獲取前端參數,本文將介紹其中的一些常用方法。 1. 使用 RequestParam 注解 RequestParam 注解是 Spring MVC 提供的一種常用方式,用于…

C++ 函數

函數是一組一起執行一個任務的語句。每個 C 程序都至少有一個函數,即主函數 main() ,所有簡單的程序都可以定義其他額外的函數。 您可以把代碼劃分到不同的函數中。如何劃分代碼到不同的函數中是由您來決定的,但在邏輯上,劃分通常…

pycharm調整最大堆發揮最大

python程序運行時,怎么提高效率,設置pycharm最大堆過程如下; 一、進入設置pycharm最大堆; 二、進入設置pycharm最大堆; 如果8g設置為6g左右,占75%左右最佳

5個實用的 Vue 技巧

在這篇文章中,我們將探討五個實用的 Vue 技巧,這些技巧可以使你日常使用 Vue 編程更高效、更富有成效。無論你是Vue的初學者還是經驗豐富的開發者,這些技巧都能幫助你編寫更清晰、更簡潔、更有效的代碼。那么,讓我們開始吧。 1. …

9.1 C++ STL 排序、算數與集合

C STL(Standard Template Library)是C標準庫中的一個重要組成部分,提供了豐富的模板函數和容器,用于處理各種數據結構和算法。在STL中,排序、算數和集合算法是常用的功能,可以幫助我們對數據進行排序、統計…

【JVM】JVM中的分代回收

文章目錄 分代收集算法什么是分代分代收集算法-工作機制MinorGC、 Mixed GC 、 FullGC的區別是什么 分代收集算法 什么是分代 在java8時,堆被分為了兩份: 新生代和老年代【1:2】 其中: 對于新生代,內部又被分為了三…

eclipse常用設置

1、調整編輯頁面字體大小 窗口 (Window)- 首選項(Preferences)- 常規(General)- 外觀 (Appearence)- 顏色與字體 (Colors And Fonts),在右邊的對話框里選擇 Java - Java Editor Text Font,點擊出現的修改&…

【ARM 嵌入式 編譯系列 3.3 -- gcc 動態庫與靜態庫的鏈接方法介紹】

文章目錄 1.1 GCC 鏈接器 LD 介紹1.1.1 GCC 鏈接器 LD 常用參數介紹1.2 動態庫和靜態庫介紹1.2.1 動態庫和靜態庫優缺點1.2.2 庫文件鏈接方式1.2.3 ldd 工具介紹1.2.4 靜態庫鏈接時搜索路徑順序1.2.5 動態庫鏈接時、執行時搜索路徑順序1.2.6 頭文件搜索路徑1.2.7 有關環境變量上…

Neo4j之Aggregation基礎

在 Neo4j 中,聚合(Aggregation)是對數據進行計算、匯總和統計的過程。以下是一些使用聚合函數的常見例子,以及它們的解釋: 計算節點數量: MATCH (p:Person) RETURN count(p) AS totalPersons;這個查詢會計…

Socks5代理在多線程爬蟲中的應用

在進行爬蟲開發過程中,我們常常需要處理大量的數據,并執行多任務并發操作。然而,頻繁的請求可能會引起目標網站的反爬機制,導致IP封禁或限制訪問。為了規避這些限制,我們可以借助Socks5代理的強大功能,通過…

Nginx反向代理技巧

跨域 作為一個前端開發者來說不可避免的問題就是跨域,那什么是跨域呢? 跨域:指的是瀏覽器不能執行其他網站的腳本。它是由瀏覽器的同源策略造成的,是瀏覽器對javascript施加的安全限制。瀏覽器的同源策略是指協議,域名…

2011-2021年數字普惠金融指數Bartik工具變量法(含原始數據和Bartik工具變量法代碼)

2011-2021年數字普惠金融指數Bartik工具變量法(含原始數據和Bartik工具變量法代碼) 1、時間:2011-2020(省級、城市),2014-2020(區縣) 2、原始數據來源:北大金融研究中心…

npm的鏡像源和代理的查看和修改

一、鏡像源 查詢當前鏡像源 npm get registry 設置為淘寶鏡像 npm config set registry http://registry.npm.taobao.org/ 設置回默認的官方鏡像 npm config set registry https://registry.npmjs.org/ 設置electron為淘寶鏡像 npm config set ELECTRON_MIRROR "h…

Redis對象類型和結構、內存回收、對象共享

對象類型和結構 在Redis中,無論是鍵key還是值value都是一個對象,每次對Redis數據庫創建一個新的鍵值對時,就至少會創建兩個對象。 常見的對象類型有: 字符串列表哈希集合有序集合 這些對象在Redis中統一用一個結構體redisObjec…

VS2019生成的DLL,給QT(MinGW版本)使用的小結

VS2019端: a 基于生成一個DLL的工程(要注意生成是x86,還是x64的,需要和后面的QT的App工程對應),這里不多解釋了,網上多的是; b 在cpp實現文件里,假如要導出一個這樣的…

Git如何上傳文件到github

Git下載網址: https://git-scm.com/downloads 1. 新建一個空文件夾,用來上傳文件,第一次需創建,以后無需創建 2. 點進去空文件夾,鼠標右鍵,使用Git Bash Here 打開 3. 克隆遠程倉庫:git cl…

深入理解JVM——垃圾回收與內存分配機制詳細講解

所謂垃圾回收,也就是要回收已經“死了”的對象。 那我們如何判斷哪些對象“存活”,哪些已經“死去”呢? 一、判斷對象已死 1、引用計數算法 給對象中添加一個引用計數器,每當有一個地方引用它時,計數器就加一&…

解決git reset --soft HEAD^撤銷commit時報錯

今天在使用git回退功能的時候,遇到以下錯誤: 解決git reset --soft HEAD^撤銷commit時報錯 問題: 在進行完commit后,想要撤銷該commit,于是使用了git reset --soft HEAD^命令,但是出現如下報錯&#xff1…