SQLite3を使用して、TEXT文字列をINTEGERにキャストして結果を並べ替えようとしています。これが私の質問です:
SELECT id,section FROM contract_sections ORDER BY CAST (section AS int)
'section'列はTEXTであり、階層/正規識別子、つまり1.2.1で構成されます。ここで、各小数は階層内の別のレベルの深さを反映します。結果を順番に返したい(つまり、1.2.8、1.2.9、1.2.10など)。キャストなしで「セクション」列で並べ替えると、次のような結果が得られます。
1.1、1.10、1.2、..。
しかし、前述のキャストを使用したクエリでは、次のように正しく順序付けされているようです。
1.1、1.2、... 1.9、1.10
私の質問は、この文字列をintにキャストした場合、SQLiteはそれをどのような値に変換し、結果としてどのように順序付けられるのかということです。現時点では私が望むように注文しているようですが、予期しないバグを回避したいと考えています。