Greenplum中如何通过SELECT查询替换并追加CLASS_5后缀
Greenplum实现Name字段CLASS_X替换与追加的SQL方案
实现思路
通过正则匹配判断Name字段是否以CLASS_3或CLASS_4结尾,分别执行替换或追加操作:
- 若匹配到结尾的
CLASS_3/CLASS_4,直接替换为CLASS_5 - 未匹配到则直接追加
_CLASS_5后缀
最终SQL语句
SELECT CASE WHEN Name ~ 'CLASS_3$|CLASS_4$' THEN regexp_replace(Name, 'CLASS_3$|CLASS_4$', 'CLASS_5') ELSE Name || '_CLASS_5' END AS Name, Marks FROM student;
语句说明
Name ~ 'CLASS_3$|CLASS_4$':使用Greenplum支持的POSIX正则匹配,判断Name字段是否以CLASS_3或CLASS_4结尾($表示行尾锚定,避免匹配中间的子串)regexp_replace(Name, 'CLASS_3$|CLASS_4$', 'CLASS_5'):对匹配到的结尾字符串进行替换,将CLASS_3/CLASS_4替换为CLASS_5Name || '_CLASS_5':对未匹配的字段直接拼接_CLASS_5后缀
测试结果
执行上述SQL后,将得到预期结果:
| Name | Marks |
|---|---|
| George_Henry_CLASS_5 | 94 |
| Jhon_CLASS_5 | 72 |
| Michael_CLASS_5 | 59 |
| David_Warner_CLASS_5 | 88 |
内容的提问来源于stack exchange,提问作者Shankar
相关产品推荐
相关产品推荐

