MySQL での正規表現置換のための replace と regexp の使用法の分析

MySQL での正規表現置換のための replace と regexp の使用法の分析

この記事では、例を使用して、replace と regexp を使用して MySQL で正規表現を置換する方法を説明します。ご参考までに、詳細は以下の通りです。

今日、友人から、データベースにある「./uploads/110100_cityHotel_北京富豪豪酒店.jpg」に似た形式を「./uploads/110100cityHotel北京富豪豪酒店.jpg」に変更する方法を尋ねられました。私はこのようにデータを処理したことがありませんが、MySQL では replace を使用してこれを実行でき、正規表現でも実行できることは知っています。

どうやってやるんですか?

必要なのは次のような 1 つの文だけです。

master_data.md_employee を更新し、name=replace(name,"_",'') を設定します (id = 825)。

-- replace(フィールド名、"置換する文字"、"置換する文字") に注意してください。これで完了です。

MySQL では、replace と regexp は主に SQL ステートメントを通じてデータを置換するために使用されます。

まず、replace の具体的な使い方について説明します。

mysql 置換の使用法

1. replace into

次のようにコードをコピーします
テーブル (id,name) の値を ('1′,'aa'),('2′,'bb') に置き換えます

このステートメントの目的は、テーブルに 2 つのレコードを挿入することです。主キーIDが1または2の場合、存在しない

は以下と同等である

テーブル (id,name) に値 ('1′,'aa'),('2′,'bb') を挿入します

同じ値が存在する場合、データは挿入されません。

2. replace(object,search,replace)

オブジェクト内の検索のすべての出現を置換で置き換えます

置換を選択('www.jb51.net','w','Ww')

—>WwWwWw.jb51.net

例: テーブルの名前フィールドのaaをbbに置き換えます

テーブルを更新します。set name=replace(name,'aa','bb')

MySQL が提供するもう 1 つのタイプのパターン マッチングは、拡張正規表現を使用することです。

このようなパターンの一致をテストする場合は、REGEXP 演算子と NOT REGEXP 演算子 (または同義語の RLIKE と NOT RLIKE) を使用します。

拡張正規表現の文字には次のようなものがあります。

· '.' は任意の 1 文字に一致します。

· 文字クラス "[...]" は、角括弧内の任意の文字に一致します。たとえば、「[abc]」は「a」、「b」、または「c」に一致します。文字の範囲に名前を付けるには、「-」を使用します。 "[az]" は任意の文字に一致し、"[0-9]" は任意の数字に一致します。

· 「 * 」は、その前に続く文字の 0 個以上と一致します。たとえば、「x*」は任意の数の「x」文字に一致し、「[0-9]*」は任意の数の数字に一致し、「.*」は任意の数の任意の文字に一致します。

REGEXP パターンがテスト対象の値のどこかに一致する場合、パターンは一致します (これは、値全体が一致する場合にのみ一致する LIKE パターン マッチングとは異なります)。

テストする値の先頭または末尾に一致するようにパターンを配置するには、パターンの先頭に「^」を使用するか、パターンの末尾に「$」を使用します。

拡張正規表現がどのように機能するかを説明するために、上記の LIKE クエリを REGEXP を使用して書き直したものを次に示します。

1. 「d」で始まる名前を検索するには、「^」を使用して名前の先頭を一致させます。

SELECT * FROM master_data.md_employee WHERE name REGEXP '^d';

このような結果セットでは大文字と小文字は区別されません。REGEXP 比較で大文字と小文字を区別するように強制する場合は、BINARY キーワードを使用して文字列の 1 つをバイナリ文字列にします。このクエリは、小文字の「d」で始まる名前のみに一致します。

SELECT * FROM master_data.md_employee WHERE name REGEXP BINARY'^d';

「love」で終わる名前を検索するには、名前の末尾に「$」を使用します。

SELECT id,name FROM master_data.md_employee WHERE name REGEXP 'love$';

「w」を含む名前を検索するには、次のクエリを使用します。

SELECT id,name FROM master_data.md_employee WHERE name REGEXP 'w';

正規表現パターンは値のどこにでも出現すれば一致するため、SQL パターンを使用する場合のように、前のクエリでパターンの両側にワイルドカードを配置して値全体に一致させる必要はありません。

ちょうど 5 文字を含む名前を検索するには、名前の先頭と末尾に「^」と「$」を使用し、その間に「.」を 5 回入力します。

SELECT id,name FROM master_data.md_employee WHERE name REGEXP '^.....$';

「{n}」演算子「n 回繰り返す」を使用して、前のクエリを書き換えることもできます。

SELECT id,name FROM master_data.md_employee WHERE name REGEXP '^.{5}$';

これは、MySQL の replace と regexp の簡単な使用方法です。より深く学習するために、具体的な例と使用方法を後続の記事で説明します。

PS: 以下に、参考までに非常に便利な正規表現ツールを 2 つ示します。

JavaScript 正規表現オンラインテストツール:
http://tools.jb51.net/regex/javascript

正規表現オンライン生成ツール:
http://tools.jb51.net/regex/create_reg

MySQL 関連のコンテンツに興味のある読者は、次のトピックを確認してください: 「MySQL 共通関数の概要」、「MySQL ログ操作スキルの概要」、「MySQL トランザクション操作スキルの概要」、「MySQL ストアド プロシージャ スキルの概要」、および「MySQL データベース ロック関連スキルの概要」。

この記事が皆様のMySQLデータベース設計に役立つことを願っています。

以下もご興味があるかもしれません:
  • MySQLにおける正規表現の一般的な使用法
  • 正規表現(RegExp)は、テキストボックスに特殊記号が含まれているかどうかを判定します。
  • MySQL で REGEXP 正規表現を使用するための完全ガイド
  • Oracle正規表現regexp_likeの使い方の詳細な説明
  • js 正規表現の説明インデックス属性 (RegExp オブジェクト)
  • js 正規表現 RegExp オブジェクト属性 lastIndex、lastMatch、lastParen、lastContext、rightContext 属性の説明
  • ES9の新機能である正規表現RegExpの詳しい説明

<<:  Vue.js を学ぶ際に遭遇する落とし穴

>>:  Linux プロセスが占有するポート番号を表示する 6 つの方法

推薦する

CentOS システムの rpm インストールと Nginx の設定

目次CentOS rpm のインストールと Nginx の設定導入rpm パッケージのインストールサ...

sqlとmysqlの違いは何ですか?

SQL とは何ですか? SQL はデータベースを操作するために使用される言語です。 SQL はすべ...

Linux (CentOS7) で RPM を使用して MySQL 8.0.11 をインストールするチュートリアル

目次1. インストールの準備1. Linux関連情報の表示(Linuxコマンドライン操作) 2. M...

Linux の一般的な基本コマンドと使用方法

この記事では、一般的な基本的な Linux コマンドとその使用方法を例を使って説明します。ご参考まで...

nginx ロケーション優先度の詳細な説明

場所表現タイプ~ は大文字と小文字を区別して通常の一致を実行することを示します~*は大文字と小文字を...

line-height=height要素の高さだがテキストが垂直方向に中央揃えされない問題を解決する

まず、行の高さが要素の高さと等しい場合にテキストが垂直方向に中央揃えにならない理由を説明します。実際...

中国における中国語ドメイン名の人気は新たなクライマックスを迎えた

<br />外交部などの中央政府機関、各レベルの地方政府、その他の国家機関や部門が率先し...

MySQL が UNION を使用して 2 つのクエリを接続できない理由の詳細な説明

概要連合接続データセットキーワードは、2つのクエリ結果セットを1つに連結し、同一のレコードを除外する...

ホバー生成の境界線によって生じる要素の移動を解決する方法

序文hover疑似クラスが要素に境界線を追加すると、要素内のコンテンツがずれることがあります。box...

最もよく使用されるJavaScriptイベントについて詳しく学ぶ

目次JavaScript イベント:よく使用されるイベント:イベントアクション要約するJavaScr...

SSHのssh-keygenコマンドの基本的な使い方の詳細な説明

SSH 公開鍵認証は、SSH 認証方式の 1 つです。 SSH パスワードフリーのログインは公開鍵認...

Vueはシンプルな計算機能を実装します

この記事では、参考までに、簡単な計算機機能を実現するためのVueの具体的なコードを紹介します。具体的...

MySQL テーブル分割後にスムーズにオンラインになる方法

目次テーブルの目的例えばテーブル分割戦略すでにオンラインになっている実行中のテーブルはどうすればよい...

ES5とES6の違いを分析する

目次概要関数シグネチャオプションパラメータ非厳密モード例外処理実用要約する概要ご存知のとおり、ES6...

CSS3 疑似クラスセレクターの簡単なレビュー

序文CSS がフロントエンド開発の基本的なスキルであるならば、「セレクター」は基礎中の基礎です。これ...