这是与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? (我无法在此处使用任何其他语言或工具。)
答案 0 :(得分:1)
您可以使用REGEXP_REPLACE
来删除结尾的Inc
,方法是使用将Inc
锚定到字符串末尾的正则表达式:
CASE WHEN "name" LIKE '% Inc' THEN REGEXP_REPLACE("name", ' Inc$', '')