Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql-如何使用十进制查找最大值_Mysql_Sql_Max - Fatal编程技术网

Mysql-如何使用十进制查找最大值

Mysql-如何使用十进制查找最大值,mysql,sql,max,Mysql,Sql,Max,在mysql表中(books_title)有144条记录。 “book_progressive”列包含以下行的值: 1.01 2.01 3.01 ... 99.01 100.01 101.01 102.01 ... 144.01 使用此查询检查最大值时: select max(book_progressive) from books_title 返回99.01,但最大值为144.01 如何解决这个问题 谢谢看起来您的书被声明为CHAR/VARCHAR而不是DECIMAL 更改列类型,或强制转换

在mysql表中(books_title)有144条记录。 “book_progressive”列包含以下行的值: 1.01 2.01 3.01 ... 99.01 100.01 101.01 102.01 ... 144.01

使用此查询检查最大值时:

select max(book_progressive) from books_title
返回99.01,但最大值为144.01

如何解决这个问题


谢谢

看起来您的书被声明为CHAR/VARCHAR而不是DECIMAL

更改列类型,或强制转换结果:

select max(CAST(book_progressive AS DECIMAL(10,2)) from books_title

看起来你的书被声明为CHAR/VARCHAR而不是DECIMAL

更改列类型,或强制转换结果:

select max(CAST(book_progressive AS DECIMAL(10,2)) from books_title

我找到了一个使用LPAD的解决方案,因为只有当字符数相等时才能找到最大值

select max(lpad(book_progressive,6,0)) from books_title

Thans

我找到了一个使用LPAD的解决方案,因为只有当字符数相等时才能找到最大值

select max(lpad(book_progressive,6,0)) from books_title

Thans

您字段的数据类型似乎是varchar而不是小数。寻求调试帮助的问题必须包括所需的行为、特定的问题或错误以及在问题本身中重现这些问题所需的最短代码。。。用于重现此信息的MySQL代码丢失您字段的数据类型似乎是varchar而不是小数。寻求调试帮助的问题必须包括所需的行为、特定的问题或错误以及在问题本身中重现此问题所需的最短代码。。。用于复制此内容的MySQL代码缺少存储库,您的解决方案是有效的将列数据类型从CHAR/VARCHAR更改为DECIMAL是您的最佳选择@frankient不更改数据类型。我使用LPAD来解决这个问题。@RaymondNijland我不认为这是最好的选择。这可能是最好的选择。假设他在当前上下文中只需要一个数字,而将列更改为数字意味着基础应用程序中的许多更改(删除查询中的引号等),这将意味着到处都有bug,那么这就不再是最佳解决方案了。这不是非黑即白。谢谢,您的解决方案是有效的。将列数据类型从CHAR/VARCHAR更改为DECIMAL是您的最佳选择@FrankieNot更改数据类型。我使用LPAD来解决这个问题。@RaymondNijland我不认为这是最好的选择。这可能是最好的选择。假设他在当前上下文中只需要一个数字,而将列更改为数字意味着基础应用程序中的许多更改(删除查询中的引号等),这将意味着到处都有bug,那么这就不再是最佳解决方案了。这不是黑或白。LPAD是一个非常糟糕的主意。。更改列类型,或者像Thomas saidLPAD那样投射结果是一个非常糟糕的主意。。更改您的列类型,或按Thomas所说的方式转换结果