sql - 如何根据字符获取子字符串并从右侧开始读取字符串
问题描述
我在一列上有以下值:
DB3-0800-VRET,
DB3-0800-IC,
IB-TZ-850-IB,
O11FS-OB ...
我想从每个值中删除破折号后的最后一部分。我需要有以下结果:
DB3-0800-VRET -> DB3-0800,
DB3-0800-IC -> DB3-0800,
O11FS-OB -> O11FS
我尝试使用 RedShift 的 SPLIT_PART 函数,但没有任何运气。如果有人知道正则表达式来选择我需要的部分,我将不胜感激。
解决方案
在 Postgres 和 Redshift 中,您应该能够使用regexp_replace()
:
select regexp_replace(str, '-[^-]+$', '')
推荐阅读
- c# - 如何在 C# 中修复文本框的高度
- r - 克服?排 ?或者 ?记忆 ?R studio 编译海量数据库的问题
- java - 无法在自定义适配器中修改 TextView
- drupal-8 - 社交身份验证 google 和简单身份验证 drupal 8
- vb.net - 计时器交错,仪表板更新事件被跳过 +
- jquery - jQuery - 为每个关联的数据属性添加活动状态
- sql - 在 Postgres 中获取一天中每一分钟的匹配时间范围计数
- django-rest-framework - 如何使用自定义逻辑创建序列化程序?
- flutter - 颤振线性渐变不显示
- c# - 在 app.config 中动态保存加密的连接字符串