【问题标题】:SUBSTRING_INDEX with 2 delimiters带有 2 个分隔符的 SUBSTRING_INDEX
【发布时间】:2020-07-08 03:57:45
【问题描述】:

我有 2 种不同类型的商品代码。它由两部分组成,[companycode]-[itemcode]。下面是例子:

答:0888-DIA172966616 乙:0888-PMA516998-2200000M

我只想对其中的 [itemcode] 部分进行子串化,所以我使用

SUBSTRING_INDEX(ItemCode, '-', -1)

它适用于 A 项目代码 DIA172966616,但对于 B,它只给我第二个“-”的值,所以它只是 2200000M。如何获取 B 的完整商品代码?

【问题讨论】:

  • 如何获取 B 的完整商品代码? 不清楚。您需要'PMA516998-2200000M' 还是'PMA516998'
  • @Akina 我需要PMA516998-2200000M 而不仅仅是PMA516998

标签: mysql substring


【解决方案1】:

SUBTRING_INDEX() 仅在您想要前 N 或最后 N 个分隔字符串时才有用,您不能直接将其用于“除前 N 之外的所有字符串”。

不要为此使用SUBSTRING_INDEX(),使用SUBSTR()LOCATE()

SUBSTR(ItemCode, LOCATE('-', ItemCode)+1)

LOCATE(ItemCode, '-') 返回第一个 - 的位置,SUBSTR() 然后返回之后的所有内容。 +1 也会跳过-

【讨论】:

  • 我仍然得到0888-PMA516998-2200000M 而不是PMA516998-2200000M 这个查询
  • Nvm,你没看错,但在 LOCATE 中应该是 LOCATE('-', ItemCode)。非常感谢,伙计。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多