select max(字段名+0) from 表名请问:为什么要加‘0’
测试数据:
1
10
11
12
13
14
15
16
17
18
19
2
20
.
.
.
9
.
.
99
4567没加‘0’查出两位数中的最大值:99
加‘0’查出所有数据中的最大值:4567
测试数据:
1
10
11
12
13
14
15
16
17
18
19
2
20
.
.
.
9
.
.
99
4567没加‘0’查出两位数中的最大值:99
加‘0’查出所有数据中的最大值:4567
select max(字段名-0) from 表名
select max(字段名*1) from 表名
select max(字段名/1) from 表名select max(cast(字段名 as float)) from 表名这些都差不多意思
set @s = '99'select @s,@s+0,SQL_VARIANT_PROPERTY ( @s , 'BaseType' )
,SQL_VARIANT_PROPERTY ( @s+0 , 'BaseType' )---------------------- ----------- ---------------- -----------------------------------
99 99 varchar int(1 行受影响)
字符串比较的时候 '99'比'4567'大
所以使用字段名+0的形式防止这样的情况发生
因为 0是 Int类型 字符型的优先级低于INT类型 所以你的字段值首先转化成INT类型然后加0
这样的话 4567就比99大了。