mysql - 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
解决方案
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 '$%';
推荐阅读
- java - java8 - 可选 - 如何正确使用?
- r - CRS(x) 中的 R 错误:PROJ4 参数-值对必须以 + 开头
- swift - 导航看起来像幻灯片
- multithreading - 是否可以在 Opencv Gstreamer 之间运行并行连接?
- python-3.x - 如何分离 HID 的系统 USB 驱动程序?
- python - 如何在#Python 中通过按回车键自动添加数字
- javascript - 日期选择器 - 具有辅助功能 - 兼容 IE11 及更高版本
- ios - 异步返回用户的经纬度
- python-3.x - 如何将 importlib.resources 与 pickle 文件一起使用?
- amazon-web-services - 假设我是 AWS IAM 用户,有什么方法可以让我使用 CLI 或控制台检查已授予我哪些资源权限