【MySQL】テーブル内指定カラムの文字列をREPLACE関数で一括置換する

MySQLテーブル内指定カラムのテキストを一括置換したいが一発勝負なので、
一括置換する前に、あらかじめ置換後の文字列を確認したい時のSELECT文を作ってみたのでメモ

【確認用SELECT文】

SELECT
置換カラム名,
REPLACE(置換カラム名, '置換したい文字列', '置換後の文字列') AS 置換後カラム名
FROM
テーブル名

使用例)
SELECT
beforer_column,
REPLACE(beforer_column, '置換したい文字列', '置換後の文字列') AS after_column
FROM
table_name

【実行用UPDATE文】

UPDATE
テーブル名
SET
置換カラム名 = REPLACE(置換カラム名, '置換したい文字列', '置換後の文字列')

使用例)
UPDATE
table_name
SET
column_name = REPLACE(column_name, '置換したい文字列', '置換後の文字列')

REPLACE関数:REPLACE(カラム名, ‘置換したい文字列’, ‘置換後の文字列’)

【MySQL】複数カラムのデータを重複しないように出力する

今回は月別アーカイブで利用する用に出力したい為、
yearとmonthを合わせた状態で重複しないようにデータを出力したい。

テーブル:t_calendar
| year| month| ….|
|—–|——|—–|
| 2011| 11| ….|
| 2011| 10| ….|
| 2012| 2| ….|
| 2012| 1| ….|
| 2011| 10| ….|
| 2011| 10| ….|
| 2011| 11| ….|
| 2011| 12| ….|
| 2012| 1| ….|
| 2012| 2| ….|

こういった場合はyearとmonthをまずGROUP BYでグルーピングしてあげてからSELECTで出力する。

SELECT year, month FROM t_calendar GROUP BY year, month;

【出力結果】
| year| month| ….|
|—–|——|—–|
| 2011| 10| ….|
| 2011| 11| ….|
| 2011| 12| ….|
| 2012| 1| ….|
| 2012| 2| ….|

古い順に並んでいるデータを新しい順に並び替えて出力する。

SELECT year, month FROM t_calendar GROUP BY year DESC, month DESC;

【出力結果】
| year| month| ….|
|—–|——|—–|
| 2012| 2| ….|
| 2012| 1| ….|
| 2011| 12| ….|
| 2011| 11| ….|
| 2011| 10| ….|

【MySQL】MySQLでフィールドの型を変更する

フィールドの型を変更したい時など、まず現状のテーブルの構造を確認する必要があります。

DESCRIBE テーブル名;

変更したいフィールド名・型を確認したら、ALTER TABLEでフィールド名・型を変更します。

ALTER TABLE テーブル名 CHANGE 変更前のフィールド名 変更後のフィールド名 型;

MySQL 3.22.16a 以降からは、MODIFYを使用することで、フィールド名の変更をせずに、フィールド型だけを変更できるようになったようです。

ALTER TABLE テーブル名 MODIFY フィールド名 型;

最後に型が変更されているか確認しましょう。

【MySQL】SQL文の覚え書き

■テーブルを作成

create table テーブル名( フィールド名 型…);

■指定したテーブルを削除

drop table テーブル名;

■データベースを表示

show databases;

■データベースにあるテーブル名を表示

show tables;

■指定したテーブルのフィールドを全部表示

show columns from テーブル名;
desc テーブル名; 

■フィールドのデータを表示

select フィールド名 from テーブル名;
最後に limit 行数 を追加すると指定行数だけ表示
(例:select * from limit 5)

■指定したテーブルのデータを削除

delete from テーブル名;

■レコードの追加

insert テーブル名(フィールド名1, フィールド名2) values(値1, 値2);

■データを更新

update テーブル名 set フィールド名 = 値 where 条件

■フィールド名を変更

alter table テーブル名 change 変更前フィールド名 変更後フィールド名 データ型;

■afterの後のフィールドに新しくフィールド追加

alter table テーブル名 add 追加フィールド名 型 after フィールド名;

■テーブル名の変更

alter table 元のテーブル名 rename to 変更したいテーブル名;