SQLで文字列を置換するにはREPLACE関数かTRANSLATE関数を使用します.DBMSによってサポートしている関数が異なります.以下に各DBMSごとに使用可能な関数を示します.
DBMS | REPLACE | TRANSLATE |
---|---|---|
Access | ○ | × |
SQLServer | ○ | × |
Oracle | ○ | ○ |
MySQL | × | ○ |
PostgreSQL | ○ | ○ |
REPLACE関数とTRANSLATE関数は動作が異なるので注意が必要です.
REPLACE関数は文字列内の指定された一部の文字列を別の文字列に置き換えます.
SQLサンプル
SELECT REPLACE('イヌヌーピー', 'イヌ', 'ス')
結果
REPLACE('イヌヌーピー', 'イヌ', 'ス') |
---|
スヌーピー |
「イヌヌーピー」という文字列から「イヌ」を「ス」に置換しています.
TRANSLATE関数は検索文字列と置換文字列を順番に一文字づつ対応させて置き換えます.
SQLサンプル
SELECT TRANSLATE('ライナス・ヴァン・ペルト', 'ライオン', 'タイガー')
結果
SELECT TRANSLATE('ライナス・ヴァン・ペルト', 'ライオン', 'タイガー') |
---|
タイナス・ヴァン・ペルト |
例として以下の顧客マスタの性別を「男」から「男性」に一括変更します.
顧客マスタ
顧客コード | 顧客名 | 性別 |
---|---|---|
A0001 | チャーリー・ブラウン | 男 |
A0002 | サリー・ブラウン | 女 |
A0003 | シュローダー | 男 |
SQL
UPDATE 社員
SET 性別 = REPLACE(性別, '男', '男性')
結果
顧客コード | 顧客名 | 性別 |
---|---|---|
A0001 | チャーリー・ブラウン | 男性 |
A0002 | サリー・ブラウン | 女 |
A0003 | シュローダー | 男性 |