Trim 一个完整的字符串,而不是字符 - Redshift
Trim a full string, not characters - Redshift
这是与 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 Association Inc" 变为 "XYZ Associatio"。 (It trimmed Inc 也是最后的 'n')
我知道我可以使用 REPLACE 函数,但我的理解是这将替换字符串中任何位置的值,我只想替换它存在于字符串末尾的值.
如何使用 Redshift 执行此操作? (我没有能力在这里使用任何其他语言或工具)。
您可以使用 REGEXP_REPLACE
通过使用将 Inc
锚定到字符串末尾的正则表达式来删除尾随 Inc
:
CASE WHEN "name" LIKE '% Inc' THEN REGEXP_REPLACE("name", ' Inc$', '')
这是与 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 Association Inc" 变为 "XYZ Associatio"。 (It trimmed Inc 也是最后的 'n')
我知道我可以使用 REPLACE 函数,但我的理解是这将替换字符串中任何位置的值,我只想替换它存在于字符串末尾的值.
如何使用 Redshift 执行此操作? (我没有能力在这里使用任何其他语言或工具)。
您可以使用 REGEXP_REPLACE
通过使用将 Inc
锚定到字符串末尾的正则表达式来删除尾随 Inc
:
CASE WHEN "name" LIKE '% Inc' THEN REGEXP_REPLACE("name", ' Inc$', '')