比较MySQL查询中字符串的值

时间:2010-03-18 19:01:35

标签: mysql comparison multiple-value

我在比较VARCHAR字段中找到的值时遇到了一些麻烦。

我有一个产品表,每个产品都有数量。我将卷存储在VARCHAR字段中,它通常是一个数字(30,40,200 ..),但有些产品有多个卷,它们的数据以分号分隔,如30; 60; 80。

我知道不建议存储多个这样的卷,但我必须像它一样使用它。

我正在尝试为产品实现按体积搜索。我还想显示体积大于或等于搜索量的产品。 这对于具有单个卷的产品来说不是问题,但是对于多卷产品来说这是一个问题。

也许一个例子可以让事情变得更清楚:假设我的产品中包含了这个产品:30; 40; 70; 80。 如果有人搜索了一个卷,那就说50,我希望显示该产品。

要做到这一点,我正在考虑编写自己的自定义MySQL函数(我之前从未这样做过),但也许有人可以提供不同的解决方案。

我为我可怜的英语道歉,但我希望我的问题清楚。

感谢。

1 个答案:

答案 0 :(得分:1)

您只需要与最大值进行比较。卷是否始终按从左到右的顺序存储?如果是,则与最后一个分号后的值进行比较(如果存在)。您可以使用SUBSTRING_INDEX选择最后一个值。

SELECT *
FROM products
WHERE CAST(SUBSTRING_INDEX(volume, ';', -1) AS UNSIGNED) >= 50