0

私はこの列を次のcodeように呼んでいます: 1-100-ETC-60, 1-100-ETC-20,1-100-ETC-70

最後の 2 文字は、常に 6、2、または 7 のいずれかで始まります。

ORDER BY SUBSTRING(code,13) ASC または DESC を実行すると、番号順に並べ替えられます。それは私が望んでいるものではない(またはクライアントが望んでいる)と思いました。

正しい並べ替え順序は、6、2、7 の順です。

これが SQL クエリを使用するだけで可能かどうかを知りたいだけです。

4

2 に答える 2

3

MySQL のFIELD()関数を使用できます。

ORDER BY FIELD(SUBSTRING(code, 11, 1), '6', '2', '7')
于 2012-06-29T17:01:54.313 に答える
1

ケースステートメントを使用します。

 ORDER BY CASE WHEN SUBSTRING(code,11) = '6' THEN '1' + substring(code, 12) ELSE SUBSTRING(code,11) END 

この場合、2 と 7 でソートするために 6 を 1 に変換する必要があります。

(部分文字列は mysql でインデックス化された 1 であるため、10 ではなく 11 です)

于 2012-06-29T16:46:41.677 に答える