使用 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中提取值

Where子句Mysql中的逗号分隔字符串参数过滤器

NSPredicate 用数组搜索逗号分隔值

使用 WHERE IN SQL 子句将字符串值从单个值拆分为多个值以获取数据

在 Visual Studio 2008 中使用设计器将逗号分隔列表作为参数传递给 db2 查询的 IN 子句