首页 > 解决方案 > mysql中的子字符串正则表达式匹配

问题描述

我有一个复杂的问题困扰了我几个小时并寻求 mysql 专家的帮助。:) 提前谢谢你。

表:t1;栏目:名称

给定表:

name
-----
$abc|def|$cde
efd|$acd
$gcb|$bvv|ggg

预期结果(仅拉取不带 $ 前缀的字符串,管道表示字段值分隔符):

name
-----
def
efd
ggg
-- Sql to create and insert
create table t1 (name varchar(100));
        insert into t1 (name) values ('$abc|def|$cde');
        insert into t1 (name) values ('efd|$acd');
        insert into t1 (name) values ('$gcb|$bvv|ggg');

mysql版本:5.6.40

标签: mysqlsubstringtrimregexp-replaceinstr

解决方案


SELECT DISTINCT
       name, SUBSTRING_INDEX(SUBSTRING_INDEX(t1.name, '|', num), '|', -1) one_value
FROM t1
/* max 3 subnames per name - expand if needed */
CROSS JOIN (SELECT 1 num UNION SELECT 2 UNION SELECT 3) numbers
HAVING one_value NOT LIKE '$%';

小提琴


推荐阅读