删除 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.
我需要清理(通过 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.