データベースにテーブル a があり、テーブル a のフィールド b は文字列型で、その中のデータのほとんどは 88A242、88A106、88A109、92A129、92A068、2000A291、2000A216、2014A063、2014A315 のような文字列です。並べ替える方法を教えてください。
並べ替えると、次のようになります: 88A106,88A109,88A242,92A068,92A129,2000A216,2000A291,2014A063,2014A315
あーるー
あーる
あーる
ごめんなさい、説明するのを忘れました データベースからのものなので、php
で処理する必要はなく、読み出したときにソートされるといいのですがじゃあ、ソートしてからデータベースに保存すればいいのでは?どうすることもできない...
$s='88A242,88A106,88A109,92A129,92A068,2000A291,2000A216,2014A063,2014A315';$arr=explode(',',$s);natsort($arr);echo "<pre class="brush:php;toolbar:false">";print_r($arr);echo "";
$str='88A242,88A106,88A109,92A129,92A068,2000A291,2000A216,2014A063,2014A315';$str1=str_replace('A','.',$str);$arr=explode(',',$str1);sort($arr,SORT_NUMERIC);$str2=implode(',',$arr);$str3=str_replace('.','A',$str2);echo $str3;
データ保存時にハッシュ値も同時に保存し、検索時にハッシュ値でソートすることをお勧めします
ハッシュ値の計算方法としては、チェックするのは難しくありません。
88A106,88A109,88A242,92A068,92A129,2000A216,2000A291,2014A063,2014A315
create temporary table T (a varchar(10));insert into T (a) values ('88A242'),('88A106'),('88A109'),('92A129'),('92A068'),('2000A291'),('2000A216'),('2014A063'),('2014A315');select * from T order by lpad(a, 10, '0');
LPAD(str,len,padstr)
左側が文字列padstrで埋められた文字列strを返します。 ~ len 文字の長さ。 str の長さが len より大きい場合、戻り値は len 文字に短縮されます。