我有一个 MySQL 表,其中有一个逗号分隔值的字段。如何获得最大值?
示例:
CREATE TABLE `test`.`scale` (`scale` VARCHAR(500));
INSERT INTO `test`.scale
VALUES
('1,5,0.3,0.8,1'),
('0.5,0.7,0.1,0.3'),
('7,0.5,0.7,4');
规模:
1,5,0.3,0.8,1
0.5,0.7,0.1,0.3
7,0.5,0.7,4
答案:
5
0.7
7
如何选择该字符串中的最大值?
不幸的是,我无法改变前一个人实现逗号分隔解决方案的方式。我希望有一个 MySQL 函数可以帮助我,否则我将不得不做一些乱七八糟的 PHP 事情。
最佳答案
我不相信 SQL 有分割字符串的功能。 Here's some code that claims to do it ,但我还没有测试过。
更深层次的原因是SQL迫切希望你将数据存储在normalized form中。在这种特殊情况下,这意味着每个字段都应该代表有关行主题的单个数据。
本质上,您可以将 scale
和 answer
存储在两个单独的表中,您可以使用每个表所属问题的 ID 来将这两个表相互匹配。比例尺每个比例尺选项有一行,而不是每个比例尺一行:
OPTIONS ANSWERS
question | scaleoption question | answer
---------|------------ ---------|-------
1 | 1.5 1 | 5
1 | .3 2 | .7
1 | .8 ...
1 | 1
2 | .5
2 | .7
...
然后,您可以使用查询 select max(scaleoption) from options where Question = 2
来获取问题 2 的最大选项。这种格式还可以让您执行诸如查找满足以下条件之一的所有问题之类的操作:选项为 1,或者获取特定问题有多少个选项的计数。它看起来更复杂,但它是一种灵活、可扩展、可移植的做事方式。
如果您想使用当前的格式,则必须返回整个字符串并用其他编程语言将其分解。
关于mysql - 如何获取 MySQL 中逗号分隔字段的最大值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9810034/