截取mysql查询结果字符串

本文介绍了一种使用SQL从复杂字符串中提取特定格式数据的方法。通过一系列字符串操作函数,如LEFT、SUBSTRING_INDEX、TRIM、REPLACE等,实现了从日志表中筛选并格式化出带有'name='标记的数据片段。此方法适用于处理带有固定前缀的短数据项。

我这个方法非常笨,但是有用,如果有好的方法可以留言哈:

SELECT
	create_date,
	trim(
		REPLACE (
			REPLACE (
				LEFT (
					substring_index(content, 'name=' ,- 1),
					5
				),
				'd',
				''
			),
			',',
			''
		)
	)
FROM
	t_log_item
WHERE
	log_type = 'userinfoCreate'
AND TO_DAYS(NOW()) - TO_DAYS(create_date) <= 2
AND content LIKE '[COMM_INFO]%name%';


MySQL 中,可运用多种函数配合 SELECT 语句进行字符串截取查询,以下是一些常用的方法: ### 使用 LEFT 函数 `LEFT(str, length)` 函数用于从字符串的左侧开始截取指定长度的字符。示例如下: ```sql SELECT LEFT('这是要截取的内容', 3); ``` 此查询会返回字符串的前 3 个字符,即 "这是要" [^1]。 ### 使用 RIGHT 函数 `RIGHT(str, length)` 函数用于从字符串的右侧开始截取指定长度的字符。示例如下: ```sql SELECT RIGHT('这是要截取的内容', 3); ``` 该查询会返回字符串的后 3 个字符,即 "的内容" [^1]。 ### 使用 SUBSTRING 函数 `SUBSTRING` 函数有多种使用方式: - **从指定位置开始截取字符串末尾**: ```sql SELECT SUBSTRING('这是要截取的内容', 4); ``` 此查询会从字符串的第 4 个字符位置开始截取,直至结束,返回 "截取的内容" [^1]。 - **从指定位置开始截取指定长度的字符**: ```sql SELECT SUBSTRING('这是要截取的内容', 4, 2); ``` 该查询会从字符串的第 4 个字符位置开始,截取 2 个字符,返回 "截取" [^1]。 - **从倒数位置开始截取字符串末尾**: ```sql SELECT SUBSTRING('这是要截取的内容', -4); ``` 此查询会从字符串的倒数第 4 个字符位置开始截取,直至结束,返回 "取的内容" [^1]。 - **从倒数位置开始截取指定长度的字符**: ```sql SELECT SUBSTRING('这是要截取的内容', -4, 2); ``` 该查询会从字符串的倒数第 4 个字符位置开始,截取 2 个字符,返回 "取的" [^1]。 ### 使用 SUBSTRING_INDEX 函数 `SUBSTRING_INDEX(str, delim, count)` 函数依据指定的分隔符截取字符串。当 `count` 为正数时,截取从左往右第 `count` 个分隔符左边的内容;当 `count` 为负数时,截取从右往左第 `count` 个分隔符右边的内容。示例如下: ```sql SELECT SUBSTRING_INDEX('apple,banana,orange', ',', 2); ``` 此查询会返回从左往右第 2 个分隔符 `,` 左边的内容,即 "apple,banana" [^2]。 ### 字符串拆分截取 若要对含分隔符的字符串进行拆分截取,可使用如下 SQL 语句: ```sql SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788', ',', help_topic_id + 1), ',', -1) AS num FROM mysql.help_topic WHERE help_topic_id < LENGTH('7654,7698,7782,7788') - LENGTH(REPLACE('7654,7698,7782,7788', ',', '')) + 1; ``` 该查询会将字符串 `7654,7698,7782,7788` 按分隔符 `,` 拆分成多个子字符串 [^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值