MySQL の replace と regexp を使用した正規表現置換の使用状況分析

黄舟
リリース: 2017-03-15 17:17:02
オリジナル
3965 人が閲覧しました

この記事では、正規表現の置換のためのMySQLにおけるreplaceとregexpの使用方法を主に紹介し、replaceとregexp正規表現の使用スキルと関連する注意事項を具体的な例と組み合わせて分析します。

この記事の例では、MySQL で正規表現を置換するための replace と regexp の使用について説明します。参考までに皆さんと共有してください。詳細は次のとおりです:

今日、友人から、データベース内にある「./uploads/110100_cityHotel_Beijing Fuluxuan Hotel.jpg」に似た形式を「./uploads/」に変更する必要があるかどうか尋ねられました。 110100cityHotelBeijing Fu Luxury Hotel.jpg」という形式です。この方法でデータを処理したことはありませんが、mysql では置換が使用でき、正規表現でも置換ができることは知っています。

どうやって行うのですか?

そのようなステートメントだけが必要です。

コードは次のとおりです:

update master_data.md_employee set name=replace(name,"_",'') where id = 825;
ログイン後にコピー

-- 注 replace (フィールド名、「置換される文字」、「置換される文字」) 、つまりCanです。

Mysqlでは、replaceとregexpは主にSQL文によるデータ置換を実現します。

まずreplaceの具体的な使い方についてお話しましょう。

mysql replace の使用法

1.replace intoreplace into

代码如下:

replace into table (id,name) values('1′,'aa'),('2′,'bb')
ログイン後にコピー

此语句的作用是向表table中插入两条记录。如果主键id为1或2不存在

就相当于

代码如下:

insert into table (id,name) values('1′,'aa'),('2′,'bb')
ログイン後にコピー

如果存在相同的值则不会插入数据

2.replace(<a href="http://www.php.cn/wiki/60.html" target="_blank">object</a>,search,replace)

コードは次のとおりです:

select replace(&#39;www.jb51.net&#39;,&#39;w&#39;,&#39;Ww&#39;)
ログイン後にコピー

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


と同等です。 コードは次のとおりです。

update table set name=replace(name,&#39;aa&#39;,&#39;bb&#39;)
ログイン後にコピー

同じ値が存在する場合、データを挿入

2.replace(<a href="http://www.php.cn/wiki/60.html " target="_blank">object <p>,search,replace) object 内の search をすべて replace に置き換えます

コードは次のとおりです:

SELECT * FROM master_data.md_employee WHERE name REGEXP &#39;^d&#39;;
ログイン後にコピー

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

コードは次のとおりです:

SELECT * FROM master_data.md_employee WHERE name REGEXP BINARY&#39;^d&#39;;
ログイン後にコピー

MySQL が提供するその他のタイプのパターン マッチングは、拡張正規表現を使用しています。

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

正規表現を拡張するいくつかの文字は次のとおりです:

· 「.」は任意の 1 文字と一致します。

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


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

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

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


拡張正規表現がどのように機能するかを説明するために、REGEXP

を使用して上記の LIKE

クエリを書き直してみましょう:

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

コードは次のとおりです:

SELECT id,name FROM master_data.md_employee WHERE name REGEXP &#39;love$&#39;;
ログイン後にコピー

このような結果セットでは大文字と小文字が区別されません。REGEXP 比較で大文字と小文字を区別するようにしたい場合は、BINARY キーワードを使用して
strings

の 1 つをバイナリ文字列にします。 。このクエリは、名前の最初の文字である小文字の「d」のみに一致します。


コードは次のとおりです:

SELECT id,name FROM master_data.md_employee WHERE name REGEXP &#39;w&#39;;
ログイン後にコピー

「love」で終わる名前を検索するには、「$」を使用して名前の末尾と一致します: 🎜🎜🎜 コードは次のとおりです: 🎜
SELECT id,name FROM master_data.md_employee WHERE name REGEXP &#39;^.....$&#39;;
ログイン後にコピー
ログイン後にコピー
🎜 To find names that 「w」が含まれる場合は、次のクエリを使用します: 🎜🎜🎜 コードは次のとおりです: 🎜
SELECT id,name FROM master_data.md_employee WHERE name REGEXP &#39;^.{5}$&#39;;
ログイン後にコピー
ログイン後にコピー
🎜 値のどこかに正規表現が出現するとパターンが一致するため、 の両側にワイルドカードを置く必要はありません。 SQL スキーマを使用しているかのように、前のクエリのパターンを使用して値全体と一致させます。 🎜🎜🎜正確に 5 文字を含む名前を検索するには、「^」と「$」を使用して名前の先頭と末尾を一致させ、間に「.」を 5 つ使用します: 🎜🎜🎜 コードは次のとおりです: 🎜
SELECT id,name FROM master_data.md_employee WHERE name REGEXP &#39;^.....$&#39;;
ログイン後にコピー
ログイン後にコピー

你也可以使用“{n}”“重复n次”操作符重写前面的查询:

代码如下:

SELECT id,name FROM master_data.md_employee WHERE name REGEXP &#39;^.{5}$&#39;;
ログイン後にコピー
ログイン後にコピー

这些知识一些简单的mysql的replace和regexp的用法,对于深入的学习,我们会在之后的文章会将具体的例子以及用法写出

以上がMySQL の replace と regexp を使用した正規表現置換の使用状況分析の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート