MySQL常用字符串函数示例和场景介绍

2025-07-31 20:50

本文主要是介绍MySQL常用字符串函数示例和场景介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MySQL常用字符串函数示例和场景介绍》MySQL提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析,本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练...

字符串是数据处理中最常见的数据类型之一,从存储用户姓名、地址到处理文本内容、日志信息,字符串数据贯穿于各种业务场景,mysql提供了丰富的字符串函数帮助我们高效地对字符串进行处理、转换和分析。本文我将全面且深入地介绍MySQL常用的字符串函数,并结合具体示例和场景,帮你熟练掌握这些实用工具。

一、字符串函数概述

1.1 字符串函数的作用

MySQL字符串函数能够实现对字符串的多种操作,包括但不限于:

  • 字符串的拼接、截取、替换
  • 大小写转换、去空格
  • 字符串查找、匹配与统计
  • 字符串格式化与加密
    这些函数极大地增强了SQL语句对字符串数据的处理能力,使开发者可以在数据库层面完成复杂的字符串操作,减少应用层的处理压力。

1.2 字符串函数分类

根据功能特性,MySQL字符串函数可大致分为以下几类:

  • 字符串长度与统计函数
  • 字符串截取与提取函数
  • 字符串连接与拆分函数
  • 字符串查找与匹配函数
  • 字符串转换与格式化函数
  • 字符串加密与解密函数

二、字符串长度与统计函数

2.1 CHAR_LENGTH(str)

CHAR_LENGTH(str)函数用于返回字符串str的字符数,一个汉字、字母、数字等都算作一个字符。
示例:查询employees表中last_name字段的字符长度

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

2.2 LENGTH(str)

LENGpythonTH(str)函数返回字符串str的字节长度。在UTF8编码下,一个英文字母占1个字节,一个汉字占3个字节。
示例:查询products表中product_name字段的字节长度

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

2.3 OCTET_LENGTH(str)

OCTET_LENGTH(str)LENGTH(str)功能相同,都是返回字符串的字节长度。

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

三、字符串截取与提取函数

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

SUBSTRING(str, pos)从字符串str的第pos个位置开始截取,直到字符串结尾;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字符串函数', 4, 6) AS extracted_substring;

四、字符串连接与拆分函数

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 phttp://www.chinasem.cnroducts;

4.3 GROUP_CONCAT(expr)

GROUP_CONCAT(expr)将分组后的结果集中的expr列值连接成一个字符串,默认用逗号分隔。
示例:查询每个department的所有employee_name

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

五、字符串查找与匹配函数

5.1 INSTR(str, substr)

INSTR(str, substr)返回子字符串substr在字符串str中第一次出现的位置,不存在则返回0。
示例:在customers表的email字段中查找@符号的位置

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

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

这两个函数与INSTR(str, substr)功能相同,都是返回子字符串在字符串中首次出现的位置。

SELECT LOCATE('world', 'Hejsllo, 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包含数字的产品

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

六、字符串转换与格式化函数

6.1 UPPER(str)、LOWER(str)

UPPER(str)将字符串转换为大写,LOWER(str)转换为小写。
示例:将employees表中的email字段统一转换为小写

SELECT LOWER(email) AS lower_email
FROM employees;

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

TRIM()用于去除字符串两端的空格或指定字符,LEADING去除开头,TRAILING去除结尾,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左侧填充padstr,使其长度达到lenRPAD(str, len, padstr)在右侧填充。
示例:将orders表中的order_id填充为8位,左侧补0

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

七、字符串加密与解密函数

7.1 MD5(str)

MD5(str)计算字符串str的MD5哈希值,常用于密码加密(但安全性较低,不建议用于敏感数据)。

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;

八、实战案例

8.1 日志分析

在日志表logs中,字段log_message记录了操作信息,需求是提取其中的操作类型(以[开头,]结尾的部分)。

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

8.2 用户数据清洗

users表中的phone_number字段进行处理,去除非数字字符,并统一格式为XXX-XXXX-XXXX

SELECT CONCAT(
           LEFT(TRIM(REGEXP_REPLACE(phone_number, '[^0-9]', '')), 3),
        China编程   '-',
           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;

到此这篇关于MySQL常用字符串函数示例和场景介绍的文章就介绍到这了,更多相关mysql字符串函数内容请搜索编程China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持China编程(www.chinasem.cn)!

这篇关于MySQL常用字符串函数示例和场景介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155547

相关文章

SQL Server跟踪自动统计信息更新实战指南

《SQLServer跟踪自动统计信息更新实战指南》本文详解SQLServer自动统计信息更新的跟踪方法,推荐使用扩展事件实时捕获更新操作及详细信息,同时结合系统视图快速检查统计信息状态,重点强调修... 目录SQL Server 如何跟踪自动统计信息更新:深入解析与实战指南 核心跟踪方法1️⃣ 利用系统目录

MySQL 内存使用率常用分析语句

《MySQL内存使用率常用分析语句》用户整理了MySQL内存占用过高的分析方法,涵盖操作系统层确认及数据库层bufferpool、内存模块差值、线程状态、performance_schema性能数据... 目录一、 OS层二、 DB层1. 全局情况2. 内存占js用详情最近连续遇到mysql内存占用过高导致

Java Stream流之GroupBy的用法及应用场景

《JavaStream流之GroupBy的用法及应用场景》本教程将详细介绍如何在Java中使用Stream流的groupby方法,包括基本用法和一些常见的实际应用场景,感兴趣的朋友一起看看吧... 目录Java Stream流之GroupBy的用法1. 前言2. 基础概念什么是 GroupBy?Stream

python使用try函数详解

《python使用try函数详解》Pythontry语句用于异常处理,支持捕获特定/多种异常、else/final子句确保资源释放,结合with语句自动清理,可自定义异常及嵌套结构,灵活应对错误场景... 目录try 函数的基本语法捕获特定异常捕获多个异常使用 else 子句使用 finally 子句捕获所

Mysql中设计数据表的过程解析

《Mysql中设计数据表的过程解析》数据库约束通过NOTNULL、UNIQUE、DEFAULT、主键和外键等规则保障数据完整性,自动校验数据,减少人工错误,提升数据一致性和业务逻辑严谨性,本文介绍My... 目录1.引言2.NOT NULL——制定某列不可以存储NULL值2.UNIQUE——保证某一列的每一

解密SQL查询语句执行的过程

《解密SQL查询语句执行的过程》文章讲解了SQL语句的执行流程,涵盖解析、优化、执行三个核心阶段,并介绍执行计划查看方法EXPLAIN,同时提出性能优化技巧如合理使用索引、避免SELECT*、JOIN... 目录1. SQL语句的基本结构2. SQL语句的执行过程3. SQL语句的执行计划4. 常见的性能优

SQL Server 中的 WITH (NOLOCK) 示例详解

《SQLServer中的WITH(NOLOCK)示例详解》SQLServer中的WITH(NOLOCK)是一种表提示,等同于READUNCOMMITTED隔离级别,允许查询在不获取共享锁的情... 目录SQL Server 中的 WITH (NOLOCK) 详解一、WITH (NOLOCK) 的本质二、工作

MySQL 强制使用特定索引的操作

《MySQL强制使用特定索引的操作》MySQL可通过FORCEINDEX、USEINDEX等语法强制查询使用特定索引,但优化器可能不采纳,需结合EXPLAIN分析执行计划,避免性能下降,注意版本差异... 目录1. 使用FORCE INDEX语法2. 使用USE INDEX语法3. 使用IGNORE IND

C# $字符串插值的使用

《C#$字符串插值的使用》本文介绍了C#中的字符串插值功能,详细介绍了使用$符号的实现方式,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录$ 字符使用方式创建内插字符串包含不同的数据类型控制内插表达式的格式控制内插表达式的对齐方式内插表达式中使用转义序列内插表达式中使用

Linux系统中查询JDK安装目录的几种常用方法

《Linux系统中查询JDK安装目录的几种常用方法》:本文主要介绍Linux系统中查询JDK安装目录的几种常用方法,方法分别是通过update-alternatives、Java命令、环境变量及目... 目录方法 1:通过update-alternatives查询(推荐)方法 2:检查所有已安装的 JDK方