Sql 修剪完整字符串,而不是字符-红移

Sql 修剪完整字符串,而不是字符-红移,sql,amazon-redshift,trim,data-manipulation,Sql,Amazon Redshift,Trim,Data Manipulation,这是与相同的问题,但答案非常特定于PHP(我使用的是红移SQL,而不是PHP) 我正在尝试从字符串中删除特定的后缀。我尝试使用,但这将删除列出的任何字符,而不仅仅是完整的字符串。我只想改变字符串,如果确切的后缀存在,我只想它被替换一次 例如,RTRIM(“name”,“Inc”)将“XYZ公司”转换为“XYZ公司”。(删除了最后的“n”,因为它是“Inc”的一部分) 接下来,我尝试使用CASE语句来限制不正确的替换,但这仍然不能解决问题,因为它将继续替换原始后缀 例如,当我运行此命令时: 当像“

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

我正在尝试从字符串中删除特定的后缀。我尝试使用,但这将删除列出的任何字符,而不仅仅是完整的字符串。我只想改变字符串,如果确切的后缀存在,我只想它被替换一次

例如,
RTRIM(“name”,“Inc”)
将“XYZ公司”转换为“XYZ公司”。(删除了最后的“n”,因为它是“Inc”的一部分)

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

例如,当我运行此命令时:

当像“%Inc”这样的“name”然后是RTRIM(“name”,“Inc”)时的情况

我得到以下结果:

“XYZ Association Inc”变为“XYZ Association”。(这是最后一个“n”)

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


我如何使用红移来实现这一点?(我无法在此使用任何其他语言或工具)。

您可以使用将
Inc
锚定到字符串末尾的正则表达式,使用
REGEXP\u REPLACE
删除尾部的
Inc

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