0

我有一个表,其中有一个 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`

它可以满足我的需要,但问题是“7 metai ir daugiau”。SUBSTRING_INDEX 获取它的 AgePrefix 为“daugiau”,因此它显示为第一条记录。我该如何解决这个问题?

4

1 回答 1

1

出于排序目的,您需要在第一个空格之后提取整个字符串,您可以将SUBSTRING函数用作:

SELECT DISTINCT `Age`, 
       SUBSTRING(Age, LOCATE(" ", Age)) as `AgePrefix`, 
       SUBSTRING_INDEX(Age, " ", 1) as `AgeValue` 
FROM `suoPage` 
ORDER BY `AgePrefix`, `AgeValue`
于 2012-07-20T11:09:53.507 回答