【问题标题】:Is there a way to find a last substring?有没有办法找到最后一个子字符串?
【发布时间】:2013-06-18 01:53:35
【问题描述】:

我的大脑可能真的很累,但我似乎无法解决这个简单的查询。我想从列中提取分隔符中的最后一个子字符串,例如“,”?我正在考虑使用 REVERSE 或 RIGHT .. 但结果真的很奇怪......

假设我在表 LOANS 中有一个表列“DESCRIPTION”,其中包含一个条目

Changed Loan Laptop from "IT-X130E-10" to "IT-X130E-9".

我想要最后一个子字符串

IT-X130E-9

在分隔符 '"' 内希望现在更清楚

【问题讨论】:

  • 请提供样本记录。
  • 没有@JW웃建议的样本记录,我只能说看看SUBSTR()和LOCATE()
  • 假设我想将 IT-X130E-10 从 'Changed Loan Laptop from "IT-X130E-10" to "IT-X130E-9"' 中提取出来。
  • 还是很困惑...更新您的帖子使用降价分隔事物以减少混乱。
  • @Nile 他想找到具有最高 ID 的密钥,如末尾的数字所示。在这种情况下,9 小于 10,因此它返回 ID 为 10 的名称。

标签: mysql search substring


【解决方案1】:

可以试试SUBSTRING INDEX(str,delim,count)

SELECT SUBSTRING_INDEX(
    SUBSTRING_INDEX('yourString', '"', -2), '"', 1);

【讨论】:

    【解决方案2】:

    关键是reverse() 和一些蛮力:

    select replace(replace(right(val, instr(substring(reverse(val), 3, 100), '"')+2), '"', ''), '.', '')
    from (select 'Changed Loan Laptop from "IT-X130E-10" to "IT-X130E-9".' as val) t
    

    这假定字符串不包含'"' 或'.'。

    【讨论】:

    • 谢谢,但有些条目确实有句号。
    猜你喜欢
    • 1970-01-01
    • 2019-10-18
    • 2013-07-05
    • 2019-11-05
    • 1970-01-01
    • 1970-01-01
    • 2021-07-23
    • 1970-01-01
    • 2016-11-24
    相关资源
    最近更新 更多