gpt4 book ai didi

mysql - 如何提取MySQL中某个字符之后出现的字符串?

转载 作者:行者123 更新时间:2023-11-29 05:02:34 26 4
gpt4 key购买 nike

如果,我有一个字符串:

'#name#user#user2#laugh#cry'

我要打印,

name
user
user2
laugh
cry

所有的字符串都是不同的,并且有不同数量的'#'

我试过使用正则表达式,但它不起作用。此查询必须应用什么逻辑?

最佳答案

首先要说的是,在许多方面,在文本列中存储分隔值列表并不是一个好的数据库设计。您基本上应该重做您的数据库结构,或者为潜在的痛苦世界做好准备。

一个快速而肮脏的解决方案是使用数字表或内联查询,并将其与表交叉连接; REGEXP_SUBSTR()(在 MySQL 8.0 中可用),让您选择特定模式的给定出现。

这是一个将从列中提取最多 10 个值的查询:

SELECT
REGEXP_SUBSTR(t.val, '[^#]+', 1, numbers.n) name
FROM
mytable t
INNER JOIN (
SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4
UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7
UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10
) numbers
ON REGEXP_SUBSTR(t.val, '[^#]+', 1, numbers.n) IS NOT NULL

Regexp [^#]+ 表示:除了#之外,尽可能多的连续字符。


Ths demo on DB Fiddle ,当给定输入字符串'#name#user#user2#laugh#cry'时,返回:

| name  |
| ----- |
| name |
| user |
| user2 |
| laugh |
| cry |

关于mysql - 如何提取MySQL中某个字符之后出现的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55173640/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com