0

私のデータベースsqliteには、浮動小数点数と時間を文字列として格納した列があります。なぜ、このクエリでそれらを注文しようとすると

select... order by cast("+filter+" as real)

この間違ったシーケンスで数字の列を返します:

    22,5
    23
    23,5
    23
    23,5
    24,5
    24

または私の時間列もこの間違った順序で:

00:56
00:57
00:52
00:46
4

1 に答える 1

0

試す

select... order by cast(replace("+filter+",',','.') as real)

Sqliteは、小数部の区切り文字として、コンマではなくドットを想定しています。また、変換できないテールを黙って無視するため、「24,5」は24.0に変換されます。

時間の列の時点では、floatにキャストせずに、文字列として並べ替えるとうまく並べ替えられます。ただし、何らかの理由でキャストしたい場合は、コロンを。でドットに変えることができますreplace

于 2013-01-05T19:16:21.340 に答える