sql - 在关键字后面的字符串中提取字符并在另一个关键字之前结束
问题描述
我有一个看起来像的表:
id
re|cid|13324242|
wa|cid|13435464|
fs|cid|2343532|
我想提取包含在“|cid|”之后的信息 在后面的“|”之前 元素。那是:
13324242
13435464
2343532
我想到了 substr() 但我不知道如何指定开始和结束元素。
解决方案
您可以REGEXP_REPLACE
在此处使用(标准 SQL):
SELECT
id,
CASE WHEN id LIKE '%|cid|%'
THEN REGEXP_REPLACE(id, '^.*\|cid\|(\d+)\|.*$', '\1') END AS cid
FROM yourTable;
这个想法是使用正则表达式替换cid
从列中提取值id
,如果它存在(如果不存在,我们将只返回NULL
)。
这是一个演示,显示正则表达式逻辑是正确的。
推荐阅读
- linux - 更新软件包时如何修复 GLib 错误?
- javascript - 在 r 中限制输入 selectizeInput 的组合闪亮
- django - Django:找不到带有参数'(3,'')'的'topic_posts'的反向
- php - 如何使用搜索数据过滤日期范围内的数据?
- excel - 获取每个不同单元格值的最大值
- java - 使用一个流从列表中删除奇数,如果它们的总和是奇数,如果总和是偶数,则删除偶数
- r - 如何用前一列中的变量替换变量
- localization - 如何以最佳方式在 SPA 中构建翻译文件?
- node.js - Gitlab CI 未显示 Cobertura 代码覆盖率可视化
- node.js - TypeError:无法读取节点js中未定义的属性'then'