修剪完整的字符串,而不是字符-Redshift

时间:2019-05-27 01:56:34

标签: sql amazon-redshift trim data-manipulation

这是与here相同的问题,但是答案非常特定于PHP(我使用的是Redshift SQL,而不是PHP)。

我正在尝试从字符串中删除特定的后缀。我尝试使用RTRIM,但这会删除所有列出的字符,而不仅仅是完整的字符串。我只希望在存在确切后缀的情况下更改字符串,并且只希望将其替换一次。

例如,RTRIM("name",' Inc')会将“ XYZ Company Corporation”转换为“ XYZ Company Corporatio”。 (已删除最后一个'n',因为这是'Inc'的一部分)

接下来,我尝试使用CASE语句限制不正确的替换,但这仍然不能解决问题,因为它将继续在原始后缀之后进行替换。

例如,当我运行此代码时:

CASE WHEN "name" LIKE '% Inc' THEN RTRIM("name",' Inc')

我得到以下结果:

“ XYZ关联公司”变为“ XYZ关联”。 (它修剪了公司,但也修剪了最后一个'n')

我知道我可以使用REPLACE函数,但是我的理解是,它将替换字符串中任意位置的值,并且我只想替换字符串末尾的值。< / p>

我该如何使用Redshift? (我无法在此处使用任何其他语言或工具。)

1 个答案:

答案 0 :(得分:1)

您可以使用REGEXP_REPLACE来删除结尾的Inc,方法是使用将Inc锚定到字符串末尾的正则表达式:

CASE WHEN "name" LIKE '% Inc' THEN REGEXP_REPLACE("name", ' Inc$', '')