mysql中截取指定字符前后的字符串

本文通过实例演示了如何在MySQL中使用SUBSTRING_INDEX函数从字符串中截取指定字符前后的子串,展示了如何从包含JSON数组的字段中提取元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mysql中截取指定字符前后的字符串

创建表,并插入数据

CREATE TABLE `stringtest` (
  `str` varchar(20) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

INSERT INTO `test`.`stringtest` (`str`) VALUES ('[\"aa\",\"nn\",\"xx\"]');
INSERT INTO `test`.`stringtest` (`str`) VALUES ('[\"cdfd\",\"nn\",\"xx\"]');
str
[“aa”,“nn”,“xx”]
[“cdfd”,“nn”,“xx”]

使用SUBSTRING_INDEX()函数

substring_index(str,delim,count)

    str:要处理的字符串

    delim:分隔符

    count:分隔符计数 

例子

取出上述表中数组的第一个元素

-- SUBSTRING_INDEX(str,'"',2)取出从左往右第二个引号左边的字符串str
-- SUBSTRING_INDEX(str1,'"',-1)取出从右往左数第一个引号右边的字符串str_1
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(str,'"',2),'"',-1) as str_1 from stringtest;

结果

str_1
aa
cdfd
### MySQL 中去除字符串前后空格 在 MySQL 中,`TRIM()` 函数用于移除字符串两端的特定字符,默认情况下会移除空格。此函数提供了灵活的方式不仅限于处理可见字符,对于不可见字符同样适用。 #### 完整语法结构 完整的 `TRIM()` 函数语法如下所示: ```sql TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str) ``` 其中: - `BOTH`, `LEADING`, 和 `TRAILING` 关键字用来指明是从哪里删除指定字符; - 如果不提供这些关键字,默认行为相当于使用 `BOTH`; - `remstr` 参数定义了想要移除的具体字符序列,默认为空格; - `str` 是待操作的目标字符串[^1][^3]。 #### 实际应用案例 为了更直观理解如何利用该函数来清理数据中的多余空白,下面给出几个具体例子: ##### 移除普通空格 当只需要简单地去掉字符串两旁的标准ASCII码下的空格时,可以直接调用 `TRIM()` 而无需额外参数: ```sql SELECT TRIM(' Hello, world! '); -- 结果: 'Hello, world!' ``` ##### 自定义移除字符 除了标准意义上的空格外,有时也需要针对其他类型的填充符做相应处理。这时可以通过设置第二个参数来自定义要被裁剪掉的内容: ```sql SELECT TRIM(BOTH '_' FROM '__Example Text__'); -- 结果: 'Example Text' ``` ##### 处理特殊字符组合 考虑到实际场景可能涉及多种复杂情况,比如存在多个连续相同或不同种类的前置/后置符号,此时依然可以依靠 `TRIM()` 来完成任务: ```sql SELECT TRIM(LEADING '-=' FROM '--==Sample String===---'); -- 结果: 'Sample String===---' SELECT TRIM(TRAILING '!?' FROM 'Question?!?!'); -- 结果: 'Question' ``` 通过上述介绍可以看出,在面对不同类型的数据清洗需求时,MySQL 的 `TRIM()` 提供了一个简洁而强大的解决方案[^2].
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值