You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在SQL中如何提取特定字符前后的文本?以提取|后方内容为例

SQL提取竖线后文本的实现方法

核心逻辑为定位竖线|在字符串中的位置,截取该位置之后的全部内容即可得到目标时间区间,以下为不同主流数据库的实现方案,统一假设存储数据的表为schedule,对应字段名为week_time:

MySQL

使用内置函数SUBSTRING_INDEX直接按分隔符截取最后一段,写法最简洁:

SELECT SUBSTRING_INDEX(week_time, '|', -1) AS time_range FROM schedule;

PostgreSQL

使用SPLIT_PART按分隔符取第二部分内容:

SELECT SPLIT_PART(week_time, '|', 2) AS time_range FROM schedule;

SQL Server

先用CHARINDEX定位竖线位置,再用SUBSTRING截取:

SELECT SUBSTRING(week_time, CHARINDEX('|', week_time) + 1, LEN(week_time)) AS time_range FROM schedule;

Oracle

用INSTR定位竖线位置后调用SUBSTR截取:

SELECT SUBSTR(week_time, INSTR(week_time, '|') + 1) AS time_range FROM schedule;

通用SQL标准写法

遵循SQL标准的写法可兼容多数高版本数据库:

SELECT SUBSTRING(week_time, POSITION('|' IN week_time) + 1) AS time_range FROM schedule;

注意事项

如果存在部分数据不含竖线的场景,可以加判断逻辑避免返回异常结果,以MySQL为例:

SELECT IF(LOCATE('|', week_time) > 0, SUBSTRING_INDEX(week_time, '|', -1), week_time) AS time_range FROM schedule;

内容的提问来源于stack exchange,提问作者user16810982

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 09:54:03