【MySQL】REPLACE関数でデータを一括置換(複数記事の誤字を一括置換してみた)
-
カテゴリ:
- DB
ええぇ!?うせやろぉ。。。?
(つω・`๑)ㆀ゚
今まで書いた記事を見返していたらoracle関連の記事に、ちらほら「orlace」や「oralce」などの誤字が含まれているのを発見しました。
この状態で放置していてはSEOに良くないし、何よりめっちゃ恥ずかしいぃ(*ノωノ)。
現状把握のため「oracle」関連の記事数を調べてみました。
SELECT COUNT(*) FROM 記事テーブル WHERE 記事カラム LIKE "%oracle%";
⇒15件
現在「oracle」の文字が含まれる記事は15記事ほど挙がっています。
その中で「orlace」だったり「oralce」が含まれる記事数を確認したところ、、、
SELECT COUNT(*) FROM 記事テーブル WHERE 記事カラム LIKE "%orlace%";
⇒5件
SELECT COUNT(*) FROM 記事テーブル WHERE 記事カラム LIKE "%oralce%";
⇒7件
なんと「orlace」が5記事、「oralce」に関しては7記事もありました。
モノによっては記事タイトルにも誤字が混じっており、SEOの観点からみてとても勿体無い状態です。
現時点では「oralce」で検索した際にはヒットしづらい状況になっているため早急に修正する必要があります!
でも誤字ある記事を探して、1つ1つ文字を修正していくのは大変です!!
(っ◞‸◟c)
そこでMySQLの力を借りて、記事に含まれる誤字を一括置換することにしました。
MySQLにはREPLACE関数という優れた機能があります。
※下記クエリは全レコードに対して一括置換するものです。間違ったカラムや条件を指定すると予期せぬ変更になる可能性があるため、実行の際は自己責任でお願いします。少なくともクエリ実行前に「mysqldump」でバックアップを取ってから実行しましょう。
UPDATE 記事テーブル SET [対象カラム名]=REPLACE([対象カラム名], "置換前の文字列", "置換後の文字列");
上記クエリは全レコードが対象で、置換対象の文字列があれば置換してくれます。
でも、個人的には全レコードを対象にするのは恐かったので、WHERE句を加えて実行しました!( ・`◡・´)
UPDATE 記事テーブル SET [対象カラム名]=REPLACE([対象カラム名], "orlace", "oracle") WHERE 記事カラム LIKE "%orlace%";
UPDATE 記事テーブル SET [対象カラム名]=REPLACE([対象カラム名], "oralce", "oracle") WHERE 記事カラム LIKE "%oralce%";
ちゃんと修正されたか確認します。
SELECT COUNT(*) FROM 記事テーブル WHERE 記事カラム LIKE "%orlace%";
⇒0件
SELECT COUNT(*) FROM 記事テーブル WHERE 記事カラム LIKE "%oralce%";
⇒0件
よしよし、これで良しっと! (´◡`)