我正在做Yelp Dataset。下面是来自coursera课程的Yelp数据集的ER图。
ER Diagram of Yelp Dataset from Coursera
在实体(Hours)中,属性(hours)包含企业营业时间的日期和时间数据。(例如,星期一|12:00-23:00)。我想从这些数据中提取小时数。
我遇到了在sql中使用TRIM()函数和通配符进行提取的示例代码。我不明白通配符在sqlite中的Trim函数中是如何工作的。例如:“%星期一星期二星期三星期四星期五星期日|%”in TRIM(H.hours,"% MondayTuesWednesThursFrisSatSun|它从以小时为单位的数据属性中删除星期一、星期二、星期三、星期四、星期五、星期六、星期日。
数据来自小时实体中的小时属性
小时 |
---|
周一12:00-23:00 |
星期二9:00-19:00 |
样本编码
SELECT B.name as B_Name,
MAX(CASE WHEN H.hours LIKE '%monday%'
THEN TRIM(H.hours,"%MondayTuesWednesThursFriSatSun|%") END) AS Mon_hours
FROM business B
INNER JOIN hours H ON B.id = H.business_id
GROUP BY B.id;
结果
企业名称 | 星期一_小时 |
---|---|
火焰厨房 | 12:00-23:00 |
Freeman的汽车音响 | 9:00-19:00 |
2条答案
按热度按时间0s7z1bwu1#
对每个工作日使用嵌套的REPLACE()函数,如下所示:
pinkon5k2#
SQLite中的TRIM()函数将删除第一个参数中的字符。
示例:
a
,因为第一个参数以a
开头,但不会删除c
,因为b
仍然存在。j
和i
被删除,但g
没有被删除,因为字母h
仍然存在。结果将是:
bcdefgh