teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

回答へのコメントに対して追記

2023/10/17 08:07

投稿

neko_the_shadow
neko_the_shadow

スコア2395

answer CHANGED
@@ -2,4 +2,32 @@
2
2
 
3
3
  ```SQL
4
4
  REPLACE(REGEXP_SUBSTR(event_date, '([0-9]+日)'), '日', '')
5
- ```
5
+ ```
6
+
7
+ ---
8
+
9
+ **2023-10-17 追記**
10
+
11
+ 質問を誤解していたようです。申し訳ありません。たとえば以下のようなSQLはどうでしょうか?
12
+
13
+ ```SQL
14
+ SELECT
15
+ event_date,
16
+ SUBSTR(REGEXP_SUBSTR(CONCAT('/', event_date), '/[0-9]+日', 1, 1), 2) AS day_1,
17
+ SUBSTR(REGEXP_SUBSTR(CONCAT('/', event_date), '/[0-9]+日', 1, 2), 2) AS day_2,
18
+ SUBSTR(REGEXP_SUBSTR(CONCAT('/', event_date), '/[0-9]+日', 1, 3), 2) AS day_3,
19
+ SUBSTR(REGEXP_SUBSTR(CONCAT('/', event_date), '/[0-9]+日', 1, 4), 2) AS day_4,
20
+ SUBSTR(REGEXP_SUBSTR(CONCAT('/', event_date), '/[0-9]+月[0-9]+日', 1, 1), 2) AS month_day_1,
21
+ SUBSTR(REGEXP_SUBSTR(CONCAT('/', event_date), '/[0-9]+月[0-9]+日', 1, 2), 2) AS month_day_2,
22
+ SUBSTR(REGEXP_SUBSTR(CONCAT('/', event_date), '/[月火水木金土日]曜日', 1, 1), 2) AS day_week_1,
23
+ SUBSTR(REGEXP_SUBSTR(CONCAT('/', event_date), '/[月火水木金土日]曜日', 1, 2), 2) AS day_week_2,
24
+ SUBSTR(REGEXP_SUBSTR(CONCAT('/', event_date), '/[第]+[12345一二三四五]+[月火水木金土日]+曜日', 1, 1), 2) AS sp_day_week_1,
25
+ SUBSTR(REGEXP_SUBSTR(CONCAT('/', event_date), '/[第]+[12345一二三四五]+[月火水木金土日]+曜日', 1, 2), 2) AS sp_day_week_2
26
+ FROM A1
27
+ ```
28
+
29
+ 処理のイメージは以下の通りです。
30
+
31
+ 1. `7日/11日/15日/22日/金曜日`というデータを`/7日/11日/15日/22日/金曜日`に変換する
32
+ 2. 変化したデータから正規表現を利用して`/7日`や`/金曜日`というデータを取り出す
33
+ 3. 取り出したデータの先頭にある`/`を削除する