代码之家  ›  专栏  ›  技术社区  ›  lukas.pukenis holographic-principle

MySQL如何查询排序日期文本

  •  0
  • lukas.pukenis holographic-principle  · 技术社区  · 14 年前

    我有一个表,其中有一个TEXT列,如下所示:

    0-4 mėn
    5-12 mėn
    1-3 metai
    4-6 metai
    7 metai ir daugiau
    

    案文为立陶宛文。现在,数据库被设计为将值保存为TEXT,这非常糟糕,但我需要查询它,以便对数据进行排序。

    我写了这个问题:

    SELECT DISTINCT `Age`, 
    SUBSTRING_INDEX(Age, " ", -1) as `AgePrefix`, 
    SUBSTRING_INDEX(Age, " ", 1) as `AgeValue` 
    FROM `suoPage` 
    ORDER BY `AgePrefix`, `AgeValue`
    

    它做了我需要的,然而,gotcha是“7 metai ir daugiau”。SUBSTRING_INDEX得到了它的AgePrefix作为“daugiau”,因此它作为第一张唱片出现。我该如何解决这个问题?

    1 回复  |  直到 14 年前
        1
  •  1
  •   Omesh    14 年前

    出于排序目的,您需要在第一个空格后提取整个字符串,这样您就可以使用 SUBSTRING 功能如下:

    SELECT DISTINCT `Age`, 
           SUBSTRING(Age, LOCATE(" ", Age)) as `AgePrefix`, 
           SUBSTRING_INDEX(Age, " ", 1) as `AgeValue` 
    FROM `suoPage` 
    ORDER BY `AgePrefix`, `AgeValue`