SQL:MySQL函数:字符串函数

目录

为什么需要字符串函数?

[1️⃣ LENGTH(str) --- 这个字符串有几个"字节"?](#1️⃣ LENGTH(str) — 这个字符串有几个“字节”?)

[2️⃣ CHAR_LENGTH(str) --- 这个字符串有几个"字符"?](#2️⃣ CHAR_LENGTH(str) — 这个字符串有几个“字符”?)

[3️⃣ TRIM(str) --- 把两边的空格剪掉](#3️⃣ TRIM(str) — 把两边的空格剪掉)

[4️⃣ REPLACE(str, a, b) --- 把 a 替换成 b](#4️⃣ REPLACE(str, a, b) — 把 a 替换成 b)

使用这些函数时的基本思维方法


为什么需要字符串函数?

我们用数据库存储信息,经常会处理 文字/文本(如:用户名、推文、商品名、评论内容)。但是这些文字往往:

  • 太长、太短(需要裁剪)

  • 多余空格(要去掉)

  • 出现错别字/旧字段(要替换)

  • 需要统计长度(做验证、展示控制)

👉 所以,字符串函数 = 数据库对"文本数据"的基础处理工具

就像洗衣机、剪刀、胶水,是处理文本的"工具箱"。

1️⃣ LENGTH(str) --- 这个字符串有几个"字节"?

❓ 为什么需要它?

因为数据库底层不是存文字,而是存"编码"后的字节。不同字符(尤其中英文)所占空间不同!

⚙️ 它怎么做?

  • 英文字符用 UTF-8 编码是 1 字节

  • 中文字符一般是 3 字节

举例:

sql 复制代码
SELECT LENGTH('abc');     -- 输出 3
SELECT LENGTH('你好');    -- 输出 6(因为每个汉字占 3 个字节)

🧩 用途:

  • 看数据占用多大空间

  • 检查数据长度限制(如字段最大 255 字节)

2️⃣ CHAR_LENGTH(str) --- 这个字符串有几个"字符"?

❓ 为什么有它?

有时候你不关心"字节数",只关心"有几个字"!

比如用户输入姓名"你好",你不在意占多少空间,只关心是不是 2 个字。

⚙️ 它怎么做?

直接按"字符数"来统计,不管每个字符占几个字节。

sql 复制代码
SELECT CHAR_LENGTH('abc');     -- 输出 3
SELECT CHAR_LENGTH('你好');    -- 输出 2

🧩 用途:

  • 表单验证:用户名不能超过 10 个字符

  • 用户界面:控制展示字符数

👉 通常我们说"长度",都推荐用 CHAR_LENGTH,而不是 LENGTH

3️⃣ TRIM(str) --- 把两边的空格剪掉

❓ 为什么?

用户在输入时,可能不小心在两边加了空格,比如:

' John ''John',你希望它们一样对待

⚙️ 它怎么做?

只删除字符串开头和结尾的空格,中间的空格不动。

sql 复制代码
SELECT TRIM('  abc  ');  -- 输出 'abc'

🧩 用途:

  • 清洗用户输入

  • 保证字符串比较不会因多余空格失败

4️⃣ REPLACE(str, a, b) --- 把 a 替换成 b

❓ 为什么?

字符串中可能有老词、错词、标记符号,要换掉:

比如把 "https" 替换为 "http",或者把"坏词"屏蔽成"**"。

⚙️ 它怎么做?

找到所有的 a,换成 b,返回一个新字符串,不改变原数据。

sql 复制代码
SELECT REPLACE('I love apple', 'apple', 'banana');
-- 输出 'I love banana'

🧩 用途:

  • 替换敏感词

  • 批量修复字符串中的错误

  • 生成格式化内容

使用这些函数时的基本思维方法

✅ 1. 从"数据干净吗?"出发

👉 如果数据输入时可能有异常(空格、乱码、多余字符),用 TRIM, REPLACE 清洗

✅ 2. 从"你想要的是字节?还是字符?"出发

👉 对存储空间、限制字段大小 → 用 LENGTH

👉 对显示限制、统计文字长度 → 用 CHAR_LENGTH

✅ 3. 从"原数据要不要动?"出发

这些函数大多数是不修改原数据,只返回新结果。

如果你想永久修改列数据,要配合 UPDATE

相关推荐
一 乐7 小时前
个人理财系统|基于java+小程序+APP的个人理财系统设计与实现(源码+数据库+文档)
java·前端·数据库·vue.js·后端·小程序
m0_748248028 小时前
Redis的数据淘汰策略解读
数据库·redis·缓存
哥哥还在IT中8 小时前
让数据库更智能-大模型如何优化我们的SQL查询
数据库·sql
计算机小手8 小时前
探索 Maxwell:高效捕获 MySQL 数据变更的轻量级中间件
数据库·经验分享·mysql·开源软件
IvorySQL8 小时前
使用 PostgreSQL 时间点恢复(Point-In-Time Recovery)的多种数据恢复技术
数据库·postgresql
腾讯云云开发9 小时前
小程序数据库权限管理,一看就会!——CloudBase新手指南
前端·数据库·微信小程序
王道长服务器 | 亚马逊云9 小时前
帝国CMS + AWS:老牌内容系统的新生之路
服务器·网络·数据库·云计算·aws
李慕婉学姐10 小时前
Springboot的民宿管理系统的设计与实现29rhm9uh(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
数据库·spring boot·后端
LB211211 小时前
Redis黑马点评 Feed流
数据库·redis·缓存
喝杯牛奶丶12 小时前
MySQL隔离级别:大厂为何偏爱RC?
java·数据库·mysql·面试