いつも型変換できる形式でデータが格納されているとは限りません。例えば日付を表すデータが「2023/08/06」になっているとDATE型に変換できませんよね。型変換するには文字列を編集する必要があります。そんなときに使うのがREPLACE関数です。
今回は文字列を置換できるREPLACE関数についてご紹介します。
REPLACE関数の使い方
REPLACE関数はこのように書きます。
REPLACE(変換対象の文字列, 変換したい文字列, 変換後の文字列)
REPLACE関数の第1引数は変換対象の文字列を書きます。第2引数は対象の文字列のうち、変換したい文字列、第3引数は置き換える文字列を書きます。
さっそく使ってみましょう!
サンプルデータ
ここにトレーニングデータがありました。
実施日はSTRING型で「2023/08/06」と入っています。
日付データとして扱いやすいDATE方に変換しましょう!
SELECT
date AS `実施日`,
menu AS `トレーニングメニュー`
FROM
`sql-book-384011.sample.20230806_training_menu`
今の形式「2023/08/06」ではDATE型に変換できません。
SELECT
menu AS `トレーニングメニュー`,
DATETIME(start_time) AS `開始時間`
FROM
`sql-book-384011.sample.20230806_training_menu`
DATE型に変換するには「年-時-分」のように「-」(ハイフン)で繋ぐ必要がありましたね。
このときに役立つのがREPLACE関数です。「/」を「-」に変換します。
SELECT
REPLACE(date, '/', '-') AS `実施日`,
menu AS `トレーニングメニュー`
FROM
`sql-book-384011.sample.20230806_training_menu`
「-」(ハイフン)に変換できました。
「2023-08-06」をDATE型に直してみましょう。
SELECT
DATE(REPLACE(date, '/', '-')) AS `実施日`,
menu AS `トレーニングメニュー`
FROM
`sql-book-384011.sample.20230806_training_menu`
DATE型に直してもエラーは発生しませんでした。
これで無事にDATE型に変換できました!
REPLACE関数を使うとこのように文字列を好きな形に編集できます。
まとめ
文字列を編集するREPLACE関数について紹介しました。
日付の表し方って色々ありますよね。
- 2023/08/06
- 2023-08-06
- 20230806
- 2023年08月06日
人間だとどれも日付データと分かりますが、データベースだと「-」(ハイフン)で繋ぐ形式しかDATE型として扱えません。元データを編集するよりも取り出すときに書き換えてしまう方が楽なのでREPLACE関数を使いましょう!