sql取逗号分割的一组数据的最大值,无序
时间: 2024-03-13 20:44:57 浏览: 146
Oracle字段根据逗号分割查询数据的方法
可以使用MySQL内置函数SUBSTRING_INDEX和MAX来实现。假设数据列名为data,逗号分隔的数据为1,2,3,4,5,则可以使用以下SQL语句:
```
SELECT MAX(SUBSTRING_INDEX(SUBSTRING_INDEX(data, ',', n), ',', -1)) AS max_val
FROM 表名, (SELECT @row_num := @row_num + 1 AS n FROM 表名, (SELECT @row_num := 0) r) nums
WHERE n <= LENGTH(data) - LENGTH(REPLACE(data, ',', '')) + 1;
```
其中,nums是一个虚拟表,用于生成1到逗号分隔数据中元素个数的序列。通过n <= LENGTH(data) - LENGTH(REPLACE(data, ',', '')) + 1限制n的范围,以避免取到空值。SUBSTRING_INDEX(SUBSTRING_INDEX(data, ',', n), ',', -1)表示取data中第n个逗号前的子串,再取该子串中最后一个逗号后的子串,即为第n个元素的值。最后使用MAX函数取出所有元素的最大值。
阅读全文