2

のリストが1,2,3,4,5,KありK,1,2,3,4,5、SQLでこれを行うにはどうすればよいですか?これらの値は、SQLテーブルにある唯一の値です。これはMySQLにありますが、他のデータベースも歓迎されます。

4

4 に答える 4

5

mysqlには整数関数がないため、次のような操作を行う必要があります。列がvarcharなどであるとすると、次のような単純なものになります。

ORDER BY CASE WHEN field REGEXP '^-?[0-9]+$' THEN field ELSE '0'+field END
于 2012-05-01T20:09:07.227 に答える
1

Oracleでは、次のことができます。

ORDER BY CASE WHEN column='K' THEN 0 ELSE TO_NUMBER(column) END

他のシステムはおそらく同様の構造を持っています。

于 2012-05-01T20:05:46.243 に答える
1

SELECTの結果を並べ替える必要がある場合は、ORDERBYステートメントでカスタムの並べ替えルールを宣言するだけです。

次に例を示します:http ://www.emadibrahim.com/2007/05/25/custom-sort-order-in-a-sql-statement/

アイデアは、各アイテムに独自の優先順位を割り当てることです。

実際のSQLサーバーに依存する可能性があることに注意してください。

于 2012-05-01T20:06:27.460 に答える
0

SQLiteで動作するものは次のとおりです。

 select v1.* from (
   select t3.*, (case when value = 'K' then '0' else value end) normalized_val 
   from t3) v1 
 order by v1.normalized_val;
于 2012-05-01T20:07:02.877 に答える