【问题标题】:TRIM the values from the middle of the string with MySql使用 MySql 修剪字符串中间的值
【发布时间】:2020-06-11 21:39:40
【问题描述】:

我在 domo 平台中有数据,需要使用 sql 进行修剪。我的数据如下所示:

id        Partner 
123       'HDM | R | Verizon (Tags)'
124       'JAM | R | T-Mobile (Tags)'
125       'EBDA - ALL | Aetna (Tags)'
126       'EBDA - HDR HMI | Aetna (Tags)'

我希望数据看起来像这样:

id        Partner 
123       'Verizon (Tags)'
124       'T-Mobile (Tags)'
125       'EBDA Aetna (Tags)'
126       'EBDA Aetna (Tags)'

我已经开发了修剪前两个值的逻辑,但似乎无法弄清楚如何从字符串中间修剪值:EBDA 之后和公司名称之前的所有内容。

这是我的代码:

select 
trim(TRIM(BOTH 'HDM | R |' FROM TRIM(BOTH 'JAM | R |' FROM TRIM(BOTH 'ALL | R |' FROM `Partner`)))) as `Partner`

【问题讨论】:

  • 用您正在使用的数据库标记您的问题。
  • 对不起!我正在使用 domo。
  • 看到这个link就和MySQL一样
  • 正确,是 MySQL。找不到任何关于如何从字符串中间修剪的文档,似乎修剪方法适用于字符串的开头和结尾,我需要排除特定值...
  • 你可以使用INSTRSUBSTRING,最大的问题是混合分隔符'-'或'|'...)

标签: sql trim domo


【解决方案1】:

如果 MySQL 那么这就是您所需要的:

select id
       , case when position(' - ' in Partner) > 0 then
            concat(substring_index(Partner, ' - ', 1) , ' ', substring_index(Partner, ' | ', -1))
            else substring_index(Partner, ' | ', -1)
         end Partner
from test

Here is a demo

【讨论】:

    【解决方案2】:

    如果你使用 MySQL,那么使用substring_index():

    select substring_index(partner, ' | ', -1)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-12-12
      • 2021-07-22
      • 2013-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      相关资源
      最近更新 更多