PostgreSQL如何拆分含指定字符串的exit_reason列实现格式化输出
exit_reason列批量转换方案
整个处理逻辑完全匹配你提的3条规则,分3步执行即可,无需枚举所有字段值:
- 提取字符串第一个
-之前的内容,没有-则取完整原值 - 若提取后的内容以
sr_开头,移除该前缀 - 将所有下划线
_替换为空格
不同常用数据库的实现代码如下:
MySQL 实现
SELECT REPLACE( CASE WHEN LEFT(SUBSTRING_INDEX(exit_reason, '-', 1), 3) = 'sr_' THEN SUBSTRING(SUBSTRING_INDEX(exit_reason, '-', 1), 4) ELSE SUBSTRING_INDEX(exit_reason, '-', 1) END, '_', ' ' ) AS processed_exit_reason FROM your_table;
PostgreSQL 实现
SELECT REPLACE( CASE WHEN LEFT(SPLIT_PART(exit_reason, '-', 1), 3) = 'sr_' THEN SUBSTRING(SPLIT_PART(exit_reason, '-', 1) FROM 4) ELSE SPLIT_PART(exit_reason, '-', 1) END, '_', ' ' ) AS processed_exit_reason FROM your_table;
Hive/Spark SQL 实现(支持正则可直接简化)
SELECT REPLACE( REGEXP_REPLACE(SPLIT(exit_reason, '-')[0], '^sr_', ''), '_', ' ' ) AS processed_exit_reason FROM your_table;
上述方案对新增的符合规则的exit_reason值无需修改代码即可自动适配,完美解决批量处理的需求。
内容的提问来源于stack exchange,提问作者Luc
相关产品推荐
相关产品推荐

