最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL常用字符串函數(shù)示例和場景介紹

 更新時間:2025年07月31日 11:21:21   作者:AA-代碼批發(fā)V哥  
MySQL提供了豐富的字符串函數(shù)幫助我們高效地對字符串進行處理、轉(zhuǎn)換和分析,本文我將全面且深入地介紹MySQL常用的字符串函數(shù),并結(jié)合具體示例和場景,幫你熟練掌握這些實用工具,感興趣的朋友跟隨小編一起看看吧

字符串是數(shù)據(jù)處理中最常見的數(shù)據(jù)類型之一,從存儲用戶姓名、地址到處理文本內(nèi)容、日志信息,字符串?dāng)?shù)據(jù)貫穿于各種業(yè)務(wù)場景,MySQL提供了豐富的字符串函數(shù)幫助我們高效地對字符串進行處理、轉(zhuǎn)換和分析。本文我將全面且深入地介紹MySQL常用的字符串函數(shù),并結(jié)合具體示例和場景,幫你熟練掌握這些實用工具。

一、字符串函數(shù)概述

1.1 字符串函數(shù)的作用

MySQL字符串函數(shù)能夠?qū)崿F(xiàn)對字符串的多種操作,包括但不限于:

  • 字符串的拼接、截取、替換
  • 大小寫轉(zhuǎn)換、去空格
  • 字符串查找、匹配與統(tǒng)計
  • 字符串格式化與加密
    這些函數(shù)極大地增強了SQL語句對字符串?dāng)?shù)據(jù)的處理能力,使開發(fā)者可以在數(shù)據(jù)庫層面完成復(fù)雜的字符串操作,減少應(yīng)用層的處理壓力。

1.2 字符串函數(shù)分類

根據(jù)功能特性,MySQL字符串函數(shù)可大致分為以下幾類:

  • 字符串長度與統(tǒng)計函數(shù)
  • 字符串截取與提取函數(shù)
  • 字符串連接與拆分函數(shù)
  • 字符串查找與匹配函數(shù)
  • 字符串轉(zhuǎn)換與格式化函數(shù)
  • 字符串加密與解密函數(shù)

二、字符串長度與統(tǒng)計函數(shù)

2.1 CHAR_LENGTH(str)

CHAR_LENGTH(str)函數(shù)用于返回字符串str的字符數(shù),一個漢字、字母、數(shù)字等都算作一個字符。
示例:查詢employees表中last_name字段的字符長度

SELECT last_name, CHAR_LENGTH(last_name) AS length
FROM employees;

2.2 LENGTH(str)

LENGTH(str)函數(shù)返回字符串str的字節(jié)長度。在UTF8編碼下,一個英文字母占1個字節(jié),一個漢字占3個字節(jié)。
示例:查詢products表中product_name字段的字節(jié)長度

SELECT product_name, LENGTH(product_name) AS byte_length
FROM products;

2.3 OCTET_LENGTH(str)

OCTET_LENGTH(str)LENGTH(str)功能相同,都是返回字符串的字節(jié)長度。

SELECT OCTET_LENGTH('Hello, 世界') AS octet_length;

三、字符串截取與提取函數(shù)

3.1 SUBSTRING(str, pos)、SUBSTRING(str, pos, len)

SUBSTRING(str, pos)從字符串str的第pos個位置開始截取,直到字符串結(jié)尾;SUBSTRING(str, pos, len)從第pos個位置開始截取長度為len的子字符串。
示例:從customers表的phone_number字段中提取后4位號碼

SELECT phone_number, SUBSTRING(phone_number, -4) AS last_four_digits
FROM customers;

3.2 LEFT(str, len)、RIGHT(str, len)

LEFT(str, len)返回字符串str最左邊len個字符,RIGHT(str, len)返回最右邊len個字符。
示例:獲取orders表中order_number字段的前3位和后3位

SELECT order_number,
       LEFT(order_number, 3) AS first_three_digits,
       RIGHT(order_number, 3) AS last_three_digits
FROM orders;

3.3 MID(str, pos, len)

MID(str, pos, len)SUBSTRING(str, pos, len)功能一致,從字符串str的第pos個位置開始截取長度為len的子字符串。

SELECT MID('MySQL字符串函數(shù)', 4, 6) AS extracted_substring;

四、字符串連接與拆分函數(shù)

4.1 CONCAT(str1, str2, …)

CONCAT(str1, str2, ...)用于將多個字符串連接成一個字符串。
示例:將employees表中的first_namelast_name連接成完整姓名

SELECT CONCAT(first_name,'', last_name) AS full_name
FROM employees;

4.2 CONCAT_WS(separator, str1, str2, …)

CONCAT_WS(separator, str1, str2, ...)使用指定的分隔符separator連接多個字符串,遇到NULL值時會跳過,不會返回NULL
示例:用逗號連接products表中的product_namecategory字段

SELECT CONCAT_WS(', ', product_name, category) AS product_info
FROM products;

4.3 GROUP_CONCAT(expr)

GROUP_CONCAT(expr)將分組后的結(jié)果集中的expr列值連接成一個字符串,默認用逗號分隔。
示例:查詢每個department的所有employee_name

SELECT department, GROUP_CONCAT(employee_name) AS employees
FROM employees
GROUP BY department;

五、字符串查找與匹配函數(shù)

5.1 INSTR(str, substr)

INSTR(str, substr)返回子字符串substr在字符串str中第一次出現(xiàn)的位置,不存在則返回0。
示例:在customers表的email字段中查找@符號的位置

SELECT email, INSTR(email, '@') AS at_position
FROM customers;

5.2 LOCATE(substr, str)、POSITION(substr IN str)

這兩個函數(shù)與INSTR(str, substr)功能相同,都是返回子字符串在字符串中首次出現(xiàn)的位置。

SELECT LOCATE('world', 'Hello, world!') AS locate_result,
       POSITION('world' IN 'Hello, world!') AS position_result;

5.3 LIKE、NOT LIKE

LIKE用于模糊匹配,配合通配符%(匹配任意字符序列)和_(匹配單個字符)使用;NOT LIKE則是取反。
示例:查詢customers表中姓名以“張”開頭的客戶

SELECT *
FROM customers
WHERE customer_name LIKE '張%';

5.4 REGEXP、NOT REGEXP

REGEXP支持正則表達式匹配,NOT REGEXP為取反。
示例:查詢products表中product_name包含數(shù)字的產(chǎn)品

SELECT product_name
FROM products
WHERE product_name REGEXP '[0-9]';

六、字符串轉(zhuǎn)換與格式化函數(shù)

6.1 UPPER(str)、LOWER(str)

UPPER(str)將字符串轉(zhuǎn)換為大寫,LOWER(str)轉(zhuǎn)換為小寫。
示例:將employees表中的email字段統(tǒng)一轉(zhuǎn)換為小寫

SELECT LOWER(email) AS lower_email
FROM employees;

6.2 TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)

TRIM()用于去除字符串兩端的空格或指定字符,LEADING去除開頭,TRAILING去除結(jié)尾,BOTH(默認)去除兩端。
示例:去除customers表中address字段兩端的空格

SELECT TRIM(address) AS trimmed_address
FROM customers;

6.3 LPAD(str, len, padstr)、RPAD(str, len, padstr)

LPAD(str, len, padstr)在字符串str左側(cè)填充padstr,使其長度達到len;RPAD(str, len, padstr)在右側(cè)填充。
示例:將orders表中的order_id填充為8位,左側(cè)補0

SELECT LPAD(order_id, 8, '0') AS padded_order_id
FROM orders;

七、字符串加密與解密函數(shù)

7.1 MD5(str)

MD5(str)計算字符串str的MD5哈希值,常用于密碼加密(但安全性較低,不建議用于敏感數(shù)據(jù))。

SELECT MD5('password') AS md5_hash;

7.2 SHA(str)、SHA2(str, hash_length)

SHA(str)計算字符串的SHA-1哈希值,SHA2(str, hash_length)計算SHA-2系列哈希值,hash_length可選224、256、384、512。

SELECT SHA('data'), SHA2('data', 256) AS sha2_256_hash;

八、實戰(zhàn)案例

8.1 日志分析

在日志表logs中,字段log_message記錄了操作信息,需求是提取其中的操作類型(以[開頭,]結(jié)尾的部分)。

SELECT SUBSTRING(log_message, INSTR(log_message, '[') + 1, INSTR(log_message, ']') - INSTR(log_message, '[') - 1) AS operation_type
FROM logs;

8.2 用戶數(shù)據(jù)清洗

users表中的phone_number字段進行處理,去除非數(shù)字字符,并統(tǒng)一格式為XXX-XXXX-XXXX

SELECT CONCAT(
           LEFT(TRIM(REGEXP_REPLACE(phone_number, '[^0-9]', '')), 3),
           '-',
           MID(TRIM(REGEXP_REPLACE(phone_number, '[^0-9]', '')), 4, 4),
           '-',
           RIGHT(TRIM(REGEXP_REPLACE(phone_number, '[^0-9]', '')), 4)
       ) AS formatted_phone_number
FROM users;

到此這篇關(guān)于MySQL常用字符串函數(shù)示例和場景介紹的文章就介紹到這了,更多相關(guān)mysql字符串函數(shù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • mysql數(shù)據(jù)庫之索引詳細介紹

    mysql數(shù)據(jù)庫之索引詳細介紹

    大家好,本篇文章主要講的是mysql數(shù)據(jù)庫之索引詳細介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • MySQL多表查詢的具體實例

    MySQL多表查詢的具體實例

    這篇文章主要介紹了MySQL多表查詢的具體實例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-01-01
  • 深入分析MySQL 的備份和恢復(fù)機制

    深入分析MySQL 的備份和恢復(fù)機制

    備份對于數(shù)據(jù)庫來說是相當(dāng)重要的工作。如果數(shù)據(jù)庫在使用過程中出現(xiàn)了問題,比如系統(tǒng)崩潰、硬件故障或錯誤的刪除了數(shù)據(jù)。這時,如果我們進行了數(shù)據(jù)備份,就能比較方便的使數(shù)據(jù)庫恢復(fù)工作,并使我們的數(shù)據(jù)損失到最小。下面我們來詳細探討下數(shù)據(jù)庫的備份與恢復(fù)。
    2016-11-11
  • MySQL Workbench導(dǎo)入excel數(shù)據(jù)的實現(xiàn)示例

    MySQL Workbench導(dǎo)入excel數(shù)據(jù)的實現(xiàn)示例

    本文主要介紹了MySQL Workbench導(dǎo)入excel數(shù)據(jù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • mysql?窗口函數(shù)?ROW_NUMBER、NTILE詳解

    mysql?窗口函數(shù)?ROW_NUMBER、NTILE詳解

    這篇文章主要介紹了mysql?窗口函數(shù)?ROW_NUMBER、NTILE,本文通過sql語句給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07
  • MySQL5.7.35雙主搭建的實現(xiàn)

    MySQL5.7.35雙主搭建的實現(xiàn)

    本文介紹了配置MySQL5.7.35的雙主復(fù)制,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-03-03
  • Mysql的SELECT語句與顯示表結(jié)構(gòu)詳解

    Mysql的SELECT語句與顯示表結(jié)構(gòu)詳解

    這篇文章主要介紹了Mysql的SELECT語句與顯示表結(jié)構(gòu)詳解的相關(guān)資料,需要的朋友可以參考下
    2023-01-01
  • MySQL中大對象的多版本并發(fā)控制詳解

    MySQL中大對象的多版本并發(fā)控制詳解

    這篇文章主要給大家介紹了關(guān)于MySQL中大對象的多版本并發(fā)控制的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家學(xué)習(xí)或者使用mysql具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • MySQL數(shù)據(jù)庫服務(wù)器逐漸變慢分析與解決方法分享

    MySQL數(shù)據(jù)庫服務(wù)器逐漸變慢分析與解決方法分享

    本文針對MySQL數(shù)據(jù)庫服務(wù)器逐漸變慢的問題, 進行分析,并提出相應(yīng)的解決辦法
    2012-01-01
  • mysql導(dǎo)入導(dǎo)出數(shù)據(jù)的示例詳解

    mysql導(dǎo)入導(dǎo)出數(shù)據(jù)的示例詳解

    本文主要介紹了MySQL 導(dǎo)出和導(dǎo)入數(shù)據(jù)的幾種實現(xiàn)方式,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-05-05

最新評論

锡林浩特市| 湘潭市| 固始县| 黑河市| 克什克腾旗| 浏阳市| 垣曲县| 河北区| 蓝田县| 阆中市| 汾阳市| 东兰县| 香河县| 英山县| 汽车| 壤塘县| 铜山县| 龙山县| 界首市| 搜索| 田阳县| 寿阳县| 上高县| 南皮县| 唐河县| 渭南市| 崇明县| 高淳县| 建始县| 武穴市| 奉节县| 玛多县| 方正县| 乌拉特前旗| 伊川县| 托里县| 乾安县| 嘉善县| 固始县| 怀宁县| 电白县|