使用 MySQL 获取字符串中最大数值

假设您有一个包含以逗号分隔的数字字符串,例如:

' -2.79,-2.63,-1.96,-0.54,-0.44,-0.68,-0.62,-1.30,-1.49 '

您需要使用 MySQL 查询语句获取该字符串中的最大值。

MySQL 代码:

SELECT MAX(CAST(value AS DECIMAL(10,2))) AS max_value
FROM (
  SELECT SUBSTRING_INDEX(SUBSTRING_INDEX('-2.79,-2.63,-1.96,-0.54,-0.44,-0.68,-0.62,-1.30,-1.49', ',', numbers.n), ',', -1) AS value
  FROM (
    SELECT @rownum := @rownum + 1 AS n
    FROM (SELECT @rownum:=0) t
    CROSS JOIN (SELECT 1 AS dummy UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) T1
    CROSS JOIN (SELECT 1 AS dummy UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) T2
  ) numbers
  WHERE CHAR_LENGTH('-2.79,-2.63,-1.96,-0.54,-0.44,-0.68,-0.62,-1.30,-1.49') - CHAR_LENGTH(REPLACE('-2.79,-2.63,-1.96,-0.54,-0.44,-0.68,-0.62,-1.30,-1.49', ',', '')) >= numbers.n - 1
) t;

代码解析:

  1. 生成数字序列: 内层子查询使用 CROSS JOIN 生成一个数字序列,用于表示字符串中的每个数字。
  2. 提取单个数字: 使用 SUBSTRING_INDEX 函数提取字符串中每个数字,然后使用 CAST 函数将其转换为 DECIMAL 类型。
  3. 获取最大值: 最外层的 SELECT 语句使用 MAX 函数获取所有提取的数字中的最大值。

注意:

  • 代码中的 -2.79,-2.63,-1.96,-0.54,-0.44,-0.68,-0.62,-1.30,-1.49 需要替换为您实际的字符串。
  • DECIMAL(10,2) 指定了最大值为十位数,其中两位小数。您可以根据实际情况调整该值。

总结:

以上代码使用 MySQL 的 SUBSTRING_INDEXCAST 函数,从以逗号分隔的字符串中提取并获取最大值。这是一个简单而有效的方法,可以用于各种数据处理场景。

MySQL 获取字符串中最大数值:使用 SUBSTRING_INDEX 和 CAST 函数

原文地址: https://www.cveoy.top/t/topic/nj5c 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录