2009-08-28 15 views
3

私は、文字列を格納し、私のテーブルの列を持っている(それがテキスト列である):MySQLのソートは、アンダースコア最後

VARCHAR(16) latin1_swedish_ci

私が言うとき、問題は、ある「ORDER BYは、 ASC "という名前を付けると、末尾にアンダースコアで始まる単語が返されます。これは、返された例です:私は並べ替えるためにPHPを使用することができます賭ける

-a 
-mmddd2 
-z 
-z3 
aaa 
b 
c 
t 
_a 
___- 

が、MySQLはダッシュの後にアンダースコアを置くようにする簡単な方法はありますか?私はこれを行うので、javascriptのソート関数の出力と一致します。

は私が取得しようとしている:使用可能な照合のどれもがあなたがあなた自身を定義することができます必要なソート順を使用しない場合はhereを説明するように

-a 
-mmddd2 
-z 
-z3 
_a 
___- 
aaa 
b 
c 
t 

答えて

5

Collationsは、ソート順を定義します。

+0

リンクはもう機能しません。 –

+0

ありがとう、@MikeFlynn。リンクを修正しました。 –

1

は、私は、これはエレガントな解決策であるとは言わないよ、しかし、あなたはこのような何かをやってみてください:

select name 
from customers 
order by replace(name, '_', '-+') asc; 

ちょうどダッシュの後に接頭辞アンダースコア値を置くものは何でもして+を交換してください。

+3

計算を使用するORDER BY句は、フィールドのインデックスの利点を損なうことに注意してください。 – ceejayoz

関連する問題