SQL 中带通配符的 TRIM 函数

问题描述 投票:0回答:1

我正在做Yelp Dataset。以下是来自coursera课程的Yelp Dataset的ER图。

ER Diagram of Yelp Dataset from Coursera

在实体(Hours)中,属性(hours)包含商家营业时间的日期和时间数据。 (例如,星期一|12:00-23:00)。我想从这些数据中提取小时数。

我遇到了在 sql 中使用带有通配符的 TRIM() 函数来提取的示例代码。以下是我尝试的示例代码和结果。我不明白通配符在 sqlite 中的 Trim 函数中是如何工作的。例如:TRIM(H.hours,“%MondayTuesWednesThursFriSatSun|%”)中的“%MondayTuesWednesThursFriSatSun|%”。它从小时属性数据中删除星期一、星期二、星期三、星期四、星期五、星期六、星期日。

Hours 实体中 hours 属性的数据

小时
周一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 | |弗里曼的汽车音响| 9:00-19:00 |

sql wildcard trim
1个回答
0
投票

像这样在每个工作日使用嵌套的 REPLACE() 函数:

SELECT (REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(H.hours, 'Monday|', ''), 'Tuesday|', ''), 'Wednesday|', ''), 'Thursday|', ''), 'Friday|', ''), 'Saturday|', ''), 'Sunday|', '') )AS Mon_hours
FROM business B 
INNER JOIN hours H ON B.id = H.business_id
© www.soinside.com 2019 - 2024. All rights reserved.