MySQL,如何拆分字符串并同时使用where子句?

时间:2018-04-02 06:18:13

标签: mysql

表格

Screenshot of Table Furnitures

我在Furnitures表中有数据条目的片段,如上图所示。我的目标是确定ItemPrice字段(逗号分隔)中的一个是否高于30.我该怎么做?

在这种情况下,在id == 1,我们有23,42,12,这意味着它发现42大于30,因此查询将显示整行。

查询

SELECT * FROM Furnitures Where ItemPrice >= 30 //从这一刻起,我不知道我应该放在这里

1 个答案:

答案 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]+),';

enter image description here

在下面的演示中,我略微修改了您的数据,方法是让第二行没有价格大于30的商品。

Demo