1

我在比较 VARCHAR 字段中的值时遇到了一些问题。

我有一张带有产品的桌子,每个产品都有体积。我将卷存储在 VARCHAR 字段中,它通常是一个数字(30、40、200..),但有些产品有多个卷,并且它们的数据以分号分隔,例如 30;60;80。

我知道不推荐这样存储多个卷,但我必须像这样使用它。

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

也许举个例子会让事情更清楚:假设我有一个产品,它的体积字段是:30;40;70;80。如果有人搜索一卷,比如说 50,我希望显示该产品。

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

我为我糟糕的英语道歉,但我希望我能把我的问题说清楚。

谢谢。

4

1 回答 1

1

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

SELECT *
FROM products
WHERE CAST(SUBSTRING_INDEX(volume, ';', -1) AS UNSIGNED) >= 50
于 2010-03-18T19:12:58.243 回答