表格
我在Furnitures
表中有数据条目的片段,如上图所示。我的目标是确定ItemPrice
字段(逗号分隔)中的一个是否高于30.我该怎么做?
在这种情况下,在id == 1
,我们有23,42,12
,这意味着它发现42大于30,因此查询将显示整行。
查询
SELECT *
FROM Furnitures
Where ItemPrice >= 30
//从这一刻起,我不知道我应该放在这里
答案 0 :(得分:2)
通常,您应该避免将CSV数据直接存储到SQL表中。但是,有时我们会被其他人做出的糟糕设计决定所困扰。在此处继续操作的一种方法是使用REGEXP
检测项目价格的CSV列表中的数字,该数字大于30:
SELECT *
FROM Furnitures
WHERE
CONCAT(',', ItemPrice, ',')
REGEXP ',(3[1-9]|[4-9][0-9]|[1-9][0-9][0-9]+),';
在下面的演示中,我略微修改了您的数据,方法是让第二行没有价格大于30的商品。