欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL?字符串截取函數及用法詳解

 更新時間:2025年05月20日 14:34:40   作者:XMYX-0  
在MySQL中,字符串截取是常見的操作,主要用于從字符串中提取特定部分,MySQL?提供了多種函數來實現這一功能,包括?LEFT()、RIGHT()、SUBSTRING()、MID()、SUBSTR()?和?SUBSTRING_INDEX()?等,本文將詳細介紹這些函數的用法,并通過示例進行說明,需要的朋友可以參考下

MySQL 字符串截取函數詳解

在 MySQL 中,字符串截取是常見的操作,主要用于從字符串中提取特定部分。MySQL 提供了多種函數來實現這一功能,包括 LEFT()、RIGHT()、SUBSTRING()MID()、SUBSTR()SUBSTRING_INDEX() 等。本文將詳細介紹這些函數的用法,并通過示例進行說明。

LEFT(str, length):從左側截取指定長度的字符

功能:從字符串 str 的左側開始,截取 length 個字符。

語法

LEFT(str, length)

示例

SELECT LEFT('sqlstudy.com', 3);

結果

+-------------------------+
| LEFT('sqlstudy.com', 3) |
+-------------------------+
| sql |
+-------------------------+

解釋:從 'sqlstudy.com' 的左側開始,截取 3 個字符,結果為 'sql'

RIGHT(str, length):從右側截取指定長度的字符

功能:從字符串 str 的右側開始,截取 length 個字符。

語法

RIGHT(str, length)

示例

SELECT RIGHT('sqlstudy.com', 3);

結果

+--------------------------+
| RIGHT('sqlstudy.com', 3) |
+--------------------------+
| com |
+--------------------------+

解釋:從 'sqlstudy.com' 的右側開始,截取 3 個字符,結果為 'com'。

SUBSTRING(str, pos) 或 SUBSTRING(str, pos, len):從指定位置開始截取

功能:從字符串 str 的第 pos 個字符開始,截取 len 個字符。pos 可以是正數或負數,正數表示從左側開始,負數表示從右側開始。

語法

SUBSTRING(str, pos)
SUBSTRING(str, pos, len)

示例

-- 從第 4 個字符開始,直到結束
SELECT SUBSTRING('sqlstudy.com', 4);
-- 從第 4 個字符開始,截取 2 個字符
SELECT SUBSTRING('sqlstudy.com', 4, 2);
-- 從倒數第 4 個字符開始,直到結束
SELECT SUBSTRING('sqlstudy.com', -4);
-- 從倒數第 4 個字符開始,截取 2 個字符
SELECT SUBSTRING('sqlstudy.com', -4, 2);

結果

+------------------------------+
| SUBSTRING('sqlstudy.com', 4) |
+------------------------------+
| study.com |
+------------------------------+

+---------------------------------+
| SUBSTRING('sqlstudy.com', 4, 2) |
+---------------------------------+
| st |
+---------------------------------+

+-------------------------------+
| SUBSTRING('sqlstudy.com', -4) |
+-------------------------------+
| .com |
+-------------------------------+

+----------------------------------+
| SUBSTRING('sqlstudy.com', -4, 2) |
+----------------------------------+
| .c |
+----------------------------------+

解釋

  • SUBSTRING('sqlstudy.com', 4):從第 4 個字符開始,直到字符串結束,結果為 'study.com'。
  • SUBSTRING('sqlstudy.com', 4, 2):從第 4 個字符開始,截取 2 個字符,結果為 'st'。
  • SUBSTRING('sqlstudy.com', -4):從倒數第 4 個字符開始,直到字符串結束,結果為 '.com'。
  • SUBSTRING('sqlstudy.com', -4, 2):從倒數第 4 個字符開始,截取 2 個字符,結果為 '.c'

注意

len 必須為非負整數。若省略 len,則默認截取到字符串末尾。

pos 超出字符串長度或為 0,返回空字符串。例如:

SELECT SUBSTRING('abc', 0, 1);   -- 結果:空字符串
SELECT SUBSTRING('abc', 5, 1);   -- 結果:空字符串

SUBSTRING_INDEX(str, delim, count):根據分隔符截取字符串

功能:根據分隔符 delim,從字符串 str 中截取出第 count 次出現的分隔符前或后的子字符串。count 為正數時,從左側開始計數;為負數時,從右側開始計數。

語法

SUBSTRING_INDEX(str, delim, count)

示例

-- 截取第二個 '.' 之前的所有字符
SELECT SUBSTRING_INDEX('www.sqlstudy.com.cn', '.', 2);
-- 截取倒數第二個 '.' 之后的所有字符
SELECT SUBSTRING_INDEX('www.sqlstudy.com.cn', '.', -2);
-- 如果分隔符不存在,返回整個字符串
SELECT SUBSTRING_INDEX('www.sqlstudy.com.cn', '.coc', 1);

結果

+------------------------------------------------+
| SUBSTRING_INDEX('www.sqlstudy.com.cn', '.', 2) |
+------------------------------------------------+
| www.sqlstudy |
+------------------------------------------------+

+-------------------------------------------------+
| SUBSTRING_INDEX('www.sqlstudy.com.cn', '.', -2) |
+-------------------------------------------------+
| com.cn |
+-------------------------------------------------+

+---------------------------------------------------+
| SUBSTRING_INDEX('www.sqlstudy.com.cn', '.coc', 1) |
+---------------------------------------------------+
| www.sqlstudy.com.cn |
+---------------------------------------------------+

解釋

  • SUBSTRING_INDEX('www.sqlstudy.com.cn', '.', 2):返回第 2 次出現的 . 之前的所有字符,結果為 'www.sqlstudy'。
  • SUBSTRING_INDEX('www.sqlstudy.com.cn', '.', -2):返回倒數第 2 次出現的 . 之后的所有字符,結果為 'com.cn'
  • SUBSTRING_INDEX('www.sqlstudy.com.cn', '.coc', 1):由于 .coc 不存在于字符串中,返回整個字符串 'www.sqlstudy.com.cn'。

注意

count 超過分隔符實際出現的次數,返回整個字符串。例如:

SELECT SUBSTRING_INDEX('a.b.c.d', '.', 5);  -- 結果:'a.b.c.d'

MID(str, pos, len) 或 SUBSTR(str, pos, len):與 SUBSTRING 等價

功能:與 SUBSTRING 函數功能相同,用于從指定位置開始截取指定長度的子字符串。

語法

MID(str, pos, len)
SUBSTR(str, pos, len)

示例

-- 從第 4 個字符開始,截取 2 個字符
SELECT MID('sqlstudy.com', 4, 2);
-- 從倒數第 4 個字符開始,截取 2 個字符
SELECT SUBSTR('sqlstudy.com', -4, 2);

結果

+----------------------------------+
| MID('sqlstudy.com', 4, 2) |
+----------------------------------+
| st |
+----------------------------------+

+-----------------------------------+
| SUBSTR('sqlstudy.com', -4, 2) |
+-----------------------------------+
| .c |
+-----------------------------------+

解釋

  • MID('sqlstudy.com', 4, 2)SUBSTRING('sqlstudy.com', 4, 2) 結果相同,均為 'st'。
  • SUBSTR('sqlstudy.com', -4, 2)SUBSTRING('sqlstudy.com', -4, 2) 結果相同,均為 '.c'

多字節(jié)字符處理

MySQL 的字符串截取函數默認按字符(而非字節(jié))處理,適用于多字節(jié)字符集(如 UTF-8)。例如:

SELECT LEFT('中文測試', 2);  -- 結果:'中文'
SELECT SUBSTRING('數據庫', 2, 2);  -- 結果:'據庫'

實際應用場景

場景 1:提取郵箱的域名

SELECT 
  email,
  SUBSTRING_INDEX(email, '@', -1) AS domain
FROM users;

結果

+-------------------+-------------+
| email | domain |
+-------------------+-------------+
| user@example.com | example.com |
+-------------------+-------------+

場景 2:解析 URL 中的路徑

SELECT 
  SUBSTRING_INDEX(SUBSTRING_INDEX(url, '//', -1), '/', 1) AS host
FROM website;

輸入'https://www.sqlstudy.com/path'
輸出'www.sqlstudy.com'

總結

函數功能概要核心區(qū)別
LEFT() / RIGHT()從左右側截取固定長度方向固定,長度明確
SUBSTRING()靈活指定起始位置和長度支持正負位置,功能最全面
SUBSTRING_INDEX()基于分隔符截取適合處理結構化字符串(如路徑)
MID() / SUBSTR()SUBSTRING 功能相同語法別名,可互換使用

掌握這些函數,可以高效處理字符串截取需求,提升數據處理的靈活性。

相關文章

  • Mysql啟動報錯Error1045(28000)的原因分析及解決

    Mysql啟動報錯Error1045(28000)的原因分析及解決

    這篇文章主要介紹了Mysql啟動報錯Error1045(28000)的原因分析及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • MySQL數據庫的事務和索引詳解

    MySQL數據庫的事務和索引詳解

    這篇文章主要介紹了MySql 索引和事務,總結分析了mysql數據庫中關于索引和事務的概念、原理、知識點及相關注意事項,需要的朋友可以參考下
    2021-10-10
  • Mysql常見的慢查詢優(yōu)化方式總結

    Mysql常見的慢查詢優(yōu)化方式總結

    優(yōu)化是一項復雜的任務,因為它最終需要對整個系統的理解,下面這篇文章主要給大家總結介紹了關于Mysql常見的慢查詢優(yōu)化方式,文中介紹的非常詳細,需要的朋友可以參考下
    2023-05-05
  • MySql數據分區(qū)操作之新增分區(qū)操作

    MySql數據分區(qū)操作之新增分區(qū)操作

    這篇文章主要介紹了MySql數據分區(qū)操作之新增分區(qū)操作,本文講解了測試創(chuàng)建分區(qū)表文件、插入測試數據、查詢P2中的數據等內容,需要的朋友可以參考下
    2015-03-03
  • mysql installer web community 5.7.21.0.msi安裝圖文教程

    mysql installer web community 5.7.21.0.msi安裝圖文教程

    這篇文章主要為大家詳細介紹了mysql installer web community 5.7.21.0.msi,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-09-09
  • innodb_index_stats導入備份數據時報錯表主鍵沖突的解決方法

    innodb_index_stats導入備份數據時報錯表主鍵沖突的解決方法

    下面小編就為大家?guī)硪黄猧nnodb_index_stats導入備份數據時報錯表主鍵沖突的解決方法。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • MySQL學習之分組查詢的用法詳解

    MySQL學習之分組查詢的用法詳解

    這篇文章主要為大家詳細介紹一下MySQL中分組查詢的使用,文中的示例代碼講解詳細,對我們學習MySQL有一定幫助,需要的可以參考一下
    2022-07-07
  • MySQL批量插入數據腳本

    MySQL批量插入數據腳本

    shell下向mysql批量插入數據的范例代碼,有需要的小伙伴可以參考下
    2016-02-02
  • MySQL三種打開方式詳細圖文教程

    MySQL三種打開方式詳細圖文教程

    MySQL有多種打開方式,具體取決于你的操作系統和安裝方式,下面這篇文章主要給大家介紹了關于MySQL三種打開方式的相關資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下
    2024-07-07
  • MySQL5.7 如何通過邏輯備份遷移到GreatSQL及注意事項

    MySQL5.7 如何通過邏輯備份遷移到GreatSQL及注意事項

    在將數據庫從MySQL 5.7遷移到GreatSQL8.0.32時,由于數據量較小且關注安全性,決定使用mysqldump執(zhí)行邏輯備份,并將數據導入GreatSQL,這篇文章主要介紹了MySQL5.7 通過邏輯備份遷移到GreatSQL注意事項,需要的朋友可以參考下
    2024-06-06

最新評論