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

MySQLで正規表現を使用して数字のみを取得しますか?


REGEXPを使用して数字のみを取得する場合は、where句で次の正規表現(^ [0-9] * $)を使用します。

ケース1- 正確に10桁の行のみが必要で、すべてが1桁である必要がある場合は、以下の正規表現を使用してください。

SELECT *FROM yourTableName
WHERE yourColumnName REGEXP '^[0-9]{10}$';

ケース2- 数字が1以上の行のみが必要な場合、構文は次のとおりです-

SELECT *FROM yourTableName
WHERE yourColumnName REGEXP '^[0-9]*$';

上記の構文では、文字が含まれていない行のみが表示されます。

上記の構文を理解するために、テーブルを作成しましょう。テーブルを作成するためのクエリは次のとおりです-

mysql> insert into OnlyDigits(UserId, UserName) values('123User1','John');
Query OK, 1 row affected (0.16 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('3445User2','Carol');
Query OK, 1 row affected (0.19 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('145363User3','Mike');
Query OK, 1 row affected (0.20 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('13455User4','Larry');
Query OK, 1 row affected (0.22 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('123555User5','Sam');
Query OK, 1 row affected (0.15 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('596766User6','David');
Query OK, 1 row affected (0.24 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('96977User7','Robert');
Query OK, 1 row affected (0.15 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('99999User8','James');
Query OK, 1 row affected (0.20 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('9999999','James');
Query OK, 1 row affected (0.13 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('153545','Maxwell');
Query OK, 1 row affected (0.23 sec)
mysql> insert into OnlyDigits(UserId, UserName) values('9999986787','Johnson');
Query OK, 1 row affected (0.20 sec)

これで、selectステートメントを使用してテーブルのすべてのレコードを表示できます。クエリは次のとおりです-

mysql> select *from OnlyDigits;
以下は出力です-

+----+-------------+----------+
| Id | UserId      | UserName |
+----+-------------+----------+
|  1 | 123User1    | John     |
|  2 | 3445User2   | Carol    |
|  3 | 145363User3 | Mike     |
|  4 | 13455User4  | Larry    |
|  5 | 123555User5 | Sam      |
|  6 | 596766User6 | David    |
|  7 | 96977User7  | Robert   |
|  8 | 99999User8  | James    |
|  9 | 9999999     | James    |
| 10 | 153545      | Maxwell |
| 11 | 9999986787  | Johnson |
+----+-------------+----------+
11 rows in set (0.00 sec)

ケース1- 以下は、文字列に正確に10桁が必要で、すべてが数字でなければならない場合の正規表現を使用したクエリです。

mysql> select *from OnlyDigits
-> where UserId REGEXP '^[0-9]{10}$';

以下は出力です-

+----+------------+----------+
| Id | UserId     | UserName |
+----+------------+----------+
| 11 | 9999986787 | Johnson  |
+----+------------+----------+
1 row in set (0.00 sec)

ケース1の代替正規表現。クエリは次のとおりです。

mysql> select *from OnlyDigits
-> where UserId REGEXP '^[[:digit:]]{10}$';

以下は出力です-

+----+------------+----------+
| Id | UserId     | UserName |
+----+------------+----------+
| 11 | 9999986787 | Johnson  |
+----+------------+----------+
1 row in set (0.00 sec)

ケース2- 1つ以上の数字(数字のみ)の行のみが必要な場合。クエリは次のとおりです。

mysql> select *from OnlyDigits
-> where UserId REGEXP'^[0-9]*$';

出力は次のとおりです。

+----+------------+----------+
| Id | UserId     | UserName |
+----+------------+----------+
| 9  | 9999999    | James    |
| 10 | 153545     | Maxwell  |
| 11 | 9999986787 | Johnson  |
+----+------------+----------+
3 rows in set (0.00 sec)

  1. 特定のMySQL行から単一の値のみを取得しますか?

    このためには、where句でSELECTINTO変数を使用します。まずテーブルを作成しましょう- mysql> create table DemoTable1896    (    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,    StudentName varchar(20),    StudentMarks int    ); Query OK, 0 rows affected (0.00 sec) 挿入コマンド-を使用して、

  2. IN()を使用して、MySQLストアドプロシージャの特定のレコードのみを取得しますか?

    まずテーブルを作成しましょう- mysql> create table DemoTable2004 (    UserId varchar(20),    UserName varchar(20) ); Query OK, 0 rows affected (0.57 sec) 挿入コマンド-を使用して、テーブルにいくつかのレコードを挿入します mysql> insert into DemoTable2004 values('John_123','John'); Query OK, 1 row affected