私の問題は、MySQL が数字の前に文字を注文することです。簡単な例を挙げると、データベースに次の文字列があります。
3, a, 2, 1, b
そして、ORDER BY ステートメントはこれを返します。
a, b, 1, 2, 3
しかし、私はそれが欲しい:
1, 2, 3, a, b
私のデータベースは ですがutf8_unicode_ci
、それは役に立ちません。それでも間違った結果が生成されます。(項目が「2something」という名前である可能性があり、「asomething」の前にある必要があるため、それらが数字であるかどうかを確認してから一番上に並べ替えることができません)。何か案は?
編集:問題が見つかりました。(ユーザーを保存する) データベースで、私は で注文してCONCAT(name, login)
おり、名前は でしたNULL
。MySQL の注文はNULL
常に一番上にあるため、文字が数字の一番上にありました (それらの名前フィールドは空の文字列でした)。