Redshift SQL REGEXP_REPLACE 函数

Posted

技术标签:

【中文标题】Redshift SQL REGEXP_REPLACE 函数【英文标题】:Redshift SQL REGEXP_REPLACE function 【发布时间】:2021-10-07 15:40:57 【问题描述】:

我有一个从源复制的值(对此无能为力)。我在这里阅读了一些示例https://docs.aws.amazon.com/redshift/latest/dg/REGEXP_REPLACE.html

示例值: ABC$ABC$ 因此,只需在第一个“€”之后修剪任何内容。我试过这个,但我无法找出正确的 REGEX 表达式。

REGEXP_REPLACE(value, '€.*\\.$', '') 

【问题讨论】:

【参考方案1】:

所以只需在第一个“€”之后修剪任何内容。

为什么要使用正则表达式?为什么不只是..

SELECT LEFT(value, CHARINDEX('€', value)-1) 

如果不是所有数据都有欧元符号,请考虑WHERE value like '%€%'

【讨论】:

【参考方案2】:

您当前的正则表达式模式包含一个点作为最后一个字符。删除它,您的方法应该有效:

SELECT REGEXP_REPLACE(value, '€.*$', '') AS value_out
FROM yourTable;

【讨论】:

【参考方案3】:

或者你可以取非€字符的初始序列:

REGEXP_SUBSTR(value, '^[^€]+') 

【讨论】:

以上是关于Redshift SQL REGEXP_REPLACE 函数的主要内容,如果未能解决你的问题,请参考以下文章

SQL(Redshift)获取多个表的交集

为 Redshift 构建 SQL 查询的困难

如何在没有连接的情况下为 postgres (Redshift) 生成 SQL 查询?

如何运行存储在 Redshift 表中的 SQL 查询

Redshift (SQL):尝试转换为时间戳

在 SQL(Redshift)中将字符串(43677)转换为日期格式 [关闭]