我需要设置一个SELECT查询,该查询将根据列中具有逗号分隔列表的匹配字符串返回行。根据与SQLite的文本匹配选择行
下面是数据的一个例子:
path title desc type feed_type markets tags
IMG_5639.jpg Malta Title description photo sheetfed tobacco,education gatefolds,accordian
IMG_5672.jpg Malta Title description conceptual inline magazine gatefolds,oversized
IMG_5689.jpg Malta Title description conceptual digital non-profit oversized
IMG_5691.jpg Malta Title description photo sheetfed automotive oversized,obtuse
IMG_5694.jpg Malta Title description photo inline tobacco postcard,oblong
IMG_5699.jpg Malta Title description conceptual digital education oversized,obtuse
IMG_5701.jpg Malta Title description conceptual sheetfed service postcard,oblong
01.jpg Barcelona Title barcelona conceptual sheetfed service diecut
02.jpg Barcelona Title barcelona photo inline education postcard,oblong
03.jpg Barcelona Title barcelona photo digital associations gatefolds,accordian
提示:如果这是您的数据库架构,我强烈建议您不要将CSV列表放入列中。这是一个反模式,很难从SQL查询:http://www.slideshare.net/billkarwin/sql-antipatterns-strike-back – 2012-03-22 16:46:34
我试过SELECT * FROM图像WHERE标签LIKE'diecut'AND tags like'长方形“期望获得包含两者的结果。似乎第二个LIKE对我的结果无任何影响。 如果我做一些像标签LIKE'过大,钝'它会得到正确的结果。尽管我希望它恢复原样,但如何使用“钝的,过大的”将不会返回任何结果。 – ChickensDontClap 2012-03-22 19:38:03
@BlueDude - 这是因为当你使用这样的LIKE子句时,它会进行原始文本比较 - 上面的数据中没有任何地方出现'钝,超大'的数据,所以它不会返回任何东西。作为你的单元测试的一部分,你需要做的很好。 – 2012-03-22 19:53:07