【问题标题】:Removing Trailing Substrings in SQL删除 SQL 中的尾随子字符串
【发布时间】:2020-02-22 00:32:10
【问题描述】:

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

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

编辑/澄清:我最感兴趣的是尾随出现的以空格开头的“单词”(例如,带有空格的“CORP”,因此不会从 LABCORP 中删除 CORP)。但也有兴趣删除主要短语,例如“THE HOME DEPOT”中的“THE”一词,但仍保留“THEOLOPOLIS”中的这些字母。

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 向我们提供转换的具体规则。你有常用后缀的列表吗?后缀是否总是在公司名称前有一个空格?

标签: sql data-cleaning snowflake-cloud-data-platform


【解决方案1】:

你可以使用regexp_replace():

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

Here 是一个 dbfiddle。

【讨论】:

    【解决方案2】:

    如果你在 sql Server 上,你可以使用:

    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
    

    【讨论】:

    • @MikeYokitis,很高兴您找到了有用的答案。请考虑通过单击左侧的灰色复选标记来接受答案。它会奖励回答的人一些声望点,你也会得到一些。
    • 感谢 Eric 的指导,我做到了。我是 SO 的菜鸟,所以指导很有启发性。
    猜你喜欢
    • 2015-04-03
    • 1970-01-01
    • 2018-06-05
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多