ホームページ > バックエンド開発 > PHPチュートリアル > MYSQL での数字と文字の混合ソートの問題についてアドバイスを求める

MYSQL での数字と文字の混合ソートの問題についてアドバイスを求める

WBOY
リリース: 2016-06-23 13:48:42
オリジナル
1559 人が閲覧しました

データベースにテーブル 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(a, 10, '0')

LPAD(str,len,padstr)
左側が文字列padstrで埋められた文字列strを返します。 ~ len 文字の長さ。 str の長さが len より大きい場合、戻り値は len 文字に短縮されます。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート