MySQL
 Computer >> コンピューター >  >> プログラミング >> MySQL

数字が混在する文字列のMySQLでの英数字の順序


テーブルにVARCHAR列があり、値が文字列で、数値が右側にあるとします。例-

John1023
Carol9871
David9098

ここで、列全体のこれらの右側の番号に基づいて注文することを検討してください。これには、ORDERBYRIGHTを使用します。

まずテーブルを作成しましょう-

mysql> create table DemoTable757 (
   Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   ClientId varchar(100)
);
Query OK, 0 rows affected (0.53 sec)

挿入コマンド-

を使用して、テーブルにいくつかのレコードを挿入します
mysql> insert into DemoTable757(ClientId) values('John1023');
Query OK, 1 row affected (0.41 sec)
mysql> insert into DemoTable757(ClientId) values('Carol9871');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable757(ClientId) values('David9098');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable757(ClientId) values('Adam9989');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable757(ClientId) values('Bob9789');
Query OK, 1 row affected (0.20 sec)

selectステートメントを使用してテーブルのすべてのレコードを表示する-

mysql> select *from DemoTable757;

これにより、次の出力が生成されます-

+----+-----------+
| Id | ClientId  |
+----+-----------+
|  1 | John1023  |
|  2 | Carol9871 |
|  3 | David9098 |
|  4 | Adam9989  |
|  5 | Bob9789   |
+----+-----------+
5 rows in set (0.00 sec)

以下は、MySQLでの英数字順のクエリです-

mysql> select Id,ClientId from DemoTable757 order by right(ClientId,4);

これにより、次の出力が生成されます-

+----+-----------+
| Id | ClientId  |
+----+-----------+
|  1 | John1023  |
|  3 | David9098 |
|  5 | Bob9789   |
|  2 | Carol9871 |
|  4 | Adam9989  |
+----+-----------+
5 rows in set (0.00 sec)

  1. 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

  2. MySQL regexpは、文字列または数値が混在する文字列を含むレコードのみを表示します。番号レコードのみを無視する

    このために、REGEXPを使用できます。以下は構文です- select yourColumnName from yourTableName where yourColumnName REGEXP '[a−zA&minu;Z]'; テーブルを作成しましょう- mysql> create table demo41 −> ( −> name varchar(40) −> ); Query OK, 0 rows affected (0.64 sec) 挿入コマンド-を使用して、いくつかのレコードをテーブ