【问题标题】:How to find the highest numbered version of text?如何找到文本的最高编号版本?
【发布时间】:2023-02-05 20:20:37
【问题描述】:

如何找到文本的最高编号版本?例如我有文本+数字的数据: Supra1,Supra2,...,第 1 列中的 SupraN:translated_description。

选择 * 从 oe.product_descriptions 在哪里 translated_description like '%Supra%';

我需要从另一列(column2)中提取最高数字的值,例如对于第 1 列中的 Supra30,N=30。

【问题讨论】:

    标签: sql oracle max


    【解决方案1】:

    如果column1中的所有值都具有相同位数的数字,您可以按它排序并使用fetch first语法:

    SELECT   column2
    FROM     mytable
    WHERE    column1 LIKE 'Supra%'
    ORDER BY column1 DESC
    FETCH FIRST ROW ONLY
    

    如果column1 中的位数不同,则必须提取它们、转换数字并按数字排序:

    SELECT   column2
    FROM     mytable
    WHERE    column1 LIKE 'Supra%'
    ORDER BY TO_NUMBER(REPLACE(column1, 'Supra', '')) DESC
    FETCH FIRST ROW ONLY
    

    【讨论】:

      【解决方案2】:

      尝试使用 regexp_substr 提取数字,然后对其应用 max:

      SELECT max(to_number(regexp_substr(t.translated_description, '[0-9]*$')))
      FROM oe.product_descriptions t
      

      这将提取数字,假设列内容的格式是SOMETEXTnumber

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-12
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-24
        相关资源
        最近更新 更多