【问题标题】:Trim a full string, not characters - Redshift修剪完整的字符串,而不是字符 - Redshift
【发布时间】:2019-10-12 14:26:04
【问题描述】:

这与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 协会”。 (它修剪了 Inc,但也修剪了最后的 'n')

我知道我可以使用 REPLACE 函数,但我的理解是这将替换字符串中任何位置的值,并且我只想替换它存在于字符串末尾的值。

如何使用 Redshift 做到这一点? (我在这里无法使用任何其他语言或工具)。

【问题讨论】:

    标签: sql amazon-redshift trim data-manipulation


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-06
      • 2013-08-17
      • 2012-08-05
      • 2016-06-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-07
      相关资源
      最近更新 更多