给定一张包含餐厅名称和营业时间的表格:
CREATE TABLE mytable_ (Name STRING, hours STRING);
-- insert the data into the original table
INSERT INTO mytable_ VALUES
('Parkstreet', 'Mon-Sun 11:30 am - 9 pm'),
('Osakaya Restaurant', 'Mon-Thu, Sun 11:30 am - 9 pm / Fri-Sat 11 am - 12:30 am'),
('The Rose', 'Mon-Thu 11:30 am - 9 pm / Fri-Sat 11 am - 12:30 am / Sun 11:30 am - 9 pm');`
这是我试过的 SQL 查询,但它没有给出预期的输出:
SELECT
Name, subquery1.Day,
SUBSTRING_INDEX(SUBSTRING_INDEX(subquery1.start_time, ' ', -5), ' ', 2) AS StartTime,
SUBSTRING_INDEX(SUBSTRING_INDEX(subquery1.end_time, ' ', -2), ' ', 2) AS EndTime,subquery1.day_of_week
FROM (SELECT
name,
hours AS start_time,
hours AS end_time,
CASE Day
WHEN 0 THEN 'Sun'
WHEN 1 THEN 'Mon'
WHEN 2 THEN 'Tue'
WHEN 3 THEN 'Wed'
WHEN 4 THEN 'Thu'
WHEN 5 THEN 'Fri'
WHEN 6 THEN 'Sat'
END AS Day,
Day + 1 AS day_of_week
FROM mytable_
CROSS JOIN (
SELECT 0 AS Day UNION ALL
SELECT 1 UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4 UNION ALL
SELECT 5 UNION ALL
SELECT 6
) AS days
WHERE LENGTH(hours) > 0) subquery1
ORDER By Name, Day_of_week`
我的做法对吗?