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」のように、数値を除いた文字列部分だけを簡単に抽出できます。データのクリーニングや整形処理にぜひ活用してください。
-
MySQLのREGEXPで特定の数値で始まる文字列+数値のレコードを取得する方法
REGEXPを使った特定の数値で始まるレコードの取得方法MySQLでは、REGEXP演算子(正規表現)を使用することで、特定の数値で始まる文字列と数値が混在したレコードを簡単に抽出できます。基本的な構文は以下の通りです。Select yourColumnName1,yourColumnName2 from yourTableName where yourColumnName2 REGEXP ^yourStringValue[yourNumericValue];サンプルテーブルの作成まずは動作確認のためのテーブルを作成しましょう。mysql> create table demo45 -&g
-
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 テーブル名;暗号化されたデータはバイ