使用 between 子句搜索逗号分隔值
Posted
技术标签:
【中文标题】使用 between 子句搜索逗号分隔值【英文标题】:Search comma separated value using between clause 【发布时间】:2012-07-03 07:51:01 【问题描述】:我有一个名为dayofweek
的表,其中数据以以下格式存储,逗号分隔。
id friday saturday sunday monday tuesday winsday
1 02:00,3:09 1:12,2:9 3:08,4:08 3:3,3:45 12:3,3:2 2:3,5:6,7:3,6:9
...
...
....
现在我想在“星期五”搜索“02:30”可用的 ID。简单来说,我想写一个这样的查询:
SELECT ID FROM dayofweek WHERE day='friday' AND time in 'commaseparatedfirstvalue' and 'comma separated second value'
有人可以帮忙吗?
【问题讨论】:
你可以用 LIKE 来做,或者你可以正确地构建你的数据库。我会推荐第二个行动方案 时间的格式甚至不一致 - 当然“2:9”应该是“2:09”。 “02:00”应该是“2:00”吗?怎么区分上午和下午?还有“Winsday”——真的吗?也没有Thursday
列?
【参考方案1】:
恐怕您必须编写自己的 SQL 函数来获取时间范围 ',例如 - 02:00,3:09' 并返回范围的开头和范围的结尾,例如例如,假设它们被称为 begin_range 和 end_range。 您的 SQL 查询将如下所示:
select id from dayofweek where '02:30' >= begin_range(friday) and '02:30' <= end_range(friday);
【讨论】:
以上是关于使用 between 子句搜索逗号分隔值的主要内容,如果未能解决你的问题,请参考以下文章
如何在光标的 select 语句 where 子句中传递逗号分隔值
如何在“PARTITIONED BY”子句的括号之间以逗号分隔的tick中提取值