【发布时间】:2015-12-14 16:20:07
【问题描述】:
我有一个字符串类型的列,我们在该字段中保存了所有尺寸和价格,它由管道和分号分隔,如下所示
10;100|11;111|12;112|13;130|14;130|15;105
我想获取该字段的最低价格(价格;尺寸,其中 10 是尺寸,1502 是价格)。
我使用了这个查询,但它只返回其中一个而不是最小值
select SUBSTRING_INDEX((textColumn), '|', 1) as sizeAndprice from myTable;
【问题讨论】:
-
为什么数据会这样存储?它是遗留的东西,还是可以改变设计?以这种方式存储数据并不完全是最佳选择,这意味着更难像您目前所发现的那样轻松找到数据。
-
我们这样做是为了尽量减少记录数
-
您必须在应用程序代码中编写存储过程或使用逻辑才能从该结构中获得最低价格。
-
如果您查看stackoverflow.com/questions/2696884/…,您会看到拆分成两列是如何完成的。这可以扩展为多个,但我猜这没有设定限制。正如@shadow 所提到的,您需要在典型查询之外执行此操作。数据库并不是真的被设计成这样使用的。
标签: mysql database delimiter string-split