我有一个表有一个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”,因此它显示为第一条记录。我该如何解决这个问题?
答案 0 :(得分:1)
为了排序目的,你需要在第一个空格后提取整个字符串,你可以使用SUBSTRING
函数:
SELECT DISTINCT `Age`,
SUBSTRING(Age, LOCATE(" ", Age)) as `AgePrefix`,
SUBSTRING_INDEX(Age, " ", 1) as `AgeValue`
FROM `suoPage`
ORDER BY `AgePrefix`, `AgeValue`