MySQLでVARCHARとして保存された番号を並べ替えるにはどうすればよいですか?085、090などのように前に0が付いている番号がありますか?
以下は構文です-
select *from yourTableName order by yourColumnName*1,yourColumnName;
まずテーブルを作成しましょう-
mysql> create table DemoTable ( Value varchar(100) ); Query OK, 0 rows affected (0.62 sec)
挿入コマンド-
を使用して、テーブルにいくつかのレコードを挿入しますmysql> insert into DemoTable values('90'); Query OK, 1 row affected (0.20 sec) mysql> insert into DemoTable values('86'); Query OK, 1 row affected (0.08 sec) mysql> insert into DemoTable values('45'); Query OK, 1 row affected (0.12 sec) mysql> insert into DemoTable values('85'); Query OK, 1 row affected (0.08 sec) mysql> insert into DemoTable values('085'); Query OK, 1 row affected (0.14 sec) mysql> insert into DemoTable values('090'); Query OK, 1 row affected (0.13 sec) mysql> insert into DemoTable values('045'); Query OK, 1 row affected (0.10 sec)
selectステートメントを使用してテーブルのすべてのレコードを表示する-
mysql> select *from DemoTable;
これにより、次の出力が生成されます-
+-------+ | Value | +-------+ | 90 | | 86 | | 45 | | 85 | | 085 | | 090 | | 045 | +-------+ 7 rows in set (0.00 sec)
以下は、VARCHARとして保存された数値を並べ替えるクエリです。一部の数値は0より前に置く必要があります
mysql> select *from DemoTable order by Value*1,Value;
これにより、次の出力が生成されます-
+-------+ | Value | +-------+ | 045 | | 45 | | 085 | | 85 | | 86 | | 090 | | 90 | +-------+ 7 rows in set (0.00 sec)
-
数値を含むVARCHAR文字列のハイフンの後の数値を削除するMySQLクエリ
これには、SUBSTRING_INDEX()を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable2040 -> ( -> StudentCode varchar(20) -> ); Query OK, 0 rows affected (0.85 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable2040 values('John-232'
-
MySQLで数字と混合された文字列で並べ替えますか?
場合によってはORDERBYを使用します。テーブルを作成しましょう- mysql> create table demo18 −> ( −> value text −> ); Query OK, 0 rows affected (1.18 sec) 挿入コマンド-を使用して、いくつかのレコードをテーブルに挿入します。 mysql> insert into demo18 values('John Smith'); Query OK, 1 row affected (0.06 sec) mysql> inse