删除 SQL 中的尾随子字符串

Removing Trailing Substrings in SQL

我需要清理(通过 SQL)一些常见尾随后缀的公司名称,如“CO”和“INC”,而不损坏剩余的字符串,例如 'PEETS COFFEE CO' 将被正确清理为 'PEETS COFFEE'.

我尝试了 TRIM,但这似乎只适用于单个字符,而 REPLACE 却过于激进,从我上面的示例中返回了 'PEETS FFEE'。有什么建议么?谢谢

Edit/clarification:我对以 space 开头的 "words" 的尾随出现最感兴趣(例如“CORP”以 space,因此 CORP 不会从 LABCORP 中删除)。但也有兴趣删除前导短语,例如 "THE HOME DEPOT" 中的单词 "THE " 但仍保留 "THEOLOPOLIS".

中的那些字母

如果您在 sql 服务器上,您可以使用:

Declare @text varchar(100)= 'PEETS COFFEE CO'
if @text like '% CO'
    select @text = left(@text, len(@text)- len(' CO'))
if @text like '% INC'
    select @text = left(@text, len(@text)- len(' INC'))
select @text

输出:

PEETS COFFEE

您可以使用 regexp_replace():

select regexp_replace(name, '( CO| INC)$', '', 1)

Here 是一个 db<>fiddle.