2012-07-20 52 views
0

我有一个具有TEXT列,看起来像这样的表:MySQL的我怎么能查询排序日期文本

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 Hotel详细信息”。 SUBSTRING_INDEX将它的AgePrefix设置为“daugiau”,因此它显示为第一条记录。我该如何解决这个问题?

回答

1

对于排序,你需要先经过空间提取整个字符串这样做,你可以使用SUBSTRING功能用途:

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

Pefect。谢谢! – 2012-07-20 11:14:18