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

MySQLのREGEXP_REPLACEで数値を除去し、文字列と「/」のみを抽出する方法

MySQLのREGEXP_REPLACEで数値を除外し、文字列と「/」だけを取得する方法

カラムの値から数値部分を取り除き、文字列と「/(スラッシュ)」のみを抽出したい場合には、REGEXP_REPLACE() 関数が便利です。この記事では、サンプルテーブルを作成しながら、正規表現パターンを使って数値を削除する具体的な手順を解説します。

1. サンプルテーブルの作成

まず、次のようにテーブルを作成します。

mysql> create table DemoTable1595
    -> (
    -> StudentCode varchar(50)
    -> );
Query OK, 0 rows affected (0.44 sec)

2. レコードの挿入

INSERT文を使って、数値と名前が混在したデータをいくつか登録します。

mysql> insert into DemoTable1595 values('200 John');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable1595 values('101 Carol/400 Taylor');
Query OK, 1 row affected (0.72 sec)
mysql> insert into DemoTable1595 values('101 302 405 Sam/9870');
Query OK, 1 row affected (0.28 sec)

3. 登録データの確認

SELECT文でテーブル内の全レコードを表示してみましょう。

mysql> select * from DemoTable1595;

実行結果は以下の通りです。

+----------------------+
| StudentCode         |
+----------------------+
| 200 John            |
| 101 Carol/400 Taylor |
| 101 302 405 Sam/9870 |
+----------------------+
3 rows in set (0.00 sec)

4. 数値を除去して文字列と「/」のみを抽出するクエリ

ここで本題です。REGEXP_REPLACE()に正規表現パターンを指定することで、数値部分だけを空文字列に置き換えられます。

mysql> select regexp_replace(StudentCode,' *[0-9]+([.][0-9]+)?(/[0-9]+([.][0-9]+)?)? *', '') as `GetOnlyStringand/` from DemoTable1595;

実行すると、次のような結果が得られます。

+-------------------+
| GetOnlyStringand/ |
+-------------------+
| John             |
| Carol/Taylor     |
| Sam/             |
+-------------------+
3 rows in set (0.00 sec)

正規表現パターンのポイント

今回使用したパターン ' *[0-9]+([.][0-9]+)?(/[0-9]+([.][0-9]+)?)? *' の意味は以下の通りです。

  • * :数値の前後に存在する可能性のある半角スペースにマッチ
  • [0-9]+:1桁以上の数字にマッチ
  • ([.][0-9]+)?:小数点やカンマを含む小数部があればオプションでマッチ
  • (/[0-9]+ ...)?:「/」で区切られた数値(例:400/9870など)にも対応

このようにREGEXP_REPLACE()を活用すれば、「200 John」→「John」、「101 Carol/400 Taylor」→「Carol/Taylor」のように、数値を除いた文字列部分だけを簡単に抽出できます。データのクリーニングや整形処理にぜひ活用してください。

  1. MySQLのREGEXPで特定の数値で始まる文字列+数値のレコードを取得する方法

    REGEXPを使った特定の数値で始まるレコードの取得方法MySQLでは、REGEXP演算子(正規表現)を使用することで、特定の数値で始まる文字列と数値が混在したレコードを簡単に抽出できます。基本的な構文は以下の通りです。Select yourColumnName1,yourColumnName2 from yourTableName where yourColumnName2 REGEXP ^yourStringValue[yourNumericValue];サンプルテーブルの作成まずは動作確認のためのテーブルを作成しましょう。mysql> create table demo45 -&g

  2. MySQLで文字列を暗号化・復号化する方法|AES_ENCRYPT()とAES_DECRYPT()の使い方

    MySQLでは、組み込み関数であるAES_ENCRYPT()とAES_DECRYPT()を使うことで、文字列を手軽に暗号化・復号化できます。この記事では、実際のSQL文と実行例を交えながら、その基本的な使い方を解説します。暗号化・復号化の基本構文データを挿入する際にAES_ENCRYPT()で暗号化し、取得する際にAES_DECRYPT()で復号化するのが基本の流れです。INSERT INTO テーブル名 VALUES(AES_ENCRYPT(値, 秘密鍵));SELECT CAST(AES_DECRYPT(カラム名, 秘密鍵) AS CHAR) FROM テーブル名;暗号化されたデータはバイ