0

次のような1つの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`

それは私が必要とすることをします、しかし、落とし穴は「7metaiirdaugiau」です。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 に答える