【问题标题】:Delete a specific character from a query output从查询输出中删除特定字符
【发布时间】:2022-12-17 12:18:32
【问题描述】:

我在 SELECT 语句中使用 regexp_replace 从查询输出中删除字符“0”。 例如,字符串 ABC012 应变为 ABC12,或者 XYZ045 变为 XYZ45。

我尝试了regexp_replace(test_column, '0.[0-9]{2}'),旨在删除中间的“0”而不影响周围的其他字符串,但输出仍然相同。老实说,我的正则表达式知识并不是很好,如果您能分享一些建议,我们将不胜感激。

【问题讨论】:

  • @a_horse_with_no_name 抱歉,这是 Redshift。

标签: amazon-redshift


【解决方案1】:

我们可以尝试在捕获组的帮助下进行替换:

SELECT test_column,
       REGEXP_REPLACE(test_column, '^([A-Z]+)0+([0-9]+)$', '') AS test_column_out
FROM yourTable;

这里的正则表达式模式表示匹配:

  • ^从值开始
  • ([A-Z]+) 匹配并捕获 领先的 alpha 部分
  • 0+ 匹配数字部分中的一个或多个前导零
  • ([0-9]+) 然后匹配并捕获 数字部分的剩余部分 $值结束

通过用 替换,我们拼接了前导零,如果它们出现的话。

【讨论】:

  • 糟糕,我之前将 postgresql 和 redshift 都放在了标签中,我正在从 Redshift 查询。我试过你的代码,但输出变成空白。是因为您的代码是针对 postgresql 而不是 redshift 的吗?
猜你喜欢
  • 2016-10-25
  • 2015-05-07
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2012-10-13
  • 1970-01-01
  • 2015-11-28
相关资源
最近更新 更多