SQL中字符串数目字比较
SQL中字符串数字比较存放的字段是varchar类型,里面是数字,现在到099,下一个就0100,然后再查最大的时候,还
SQL中字符串数字比较
存放的字段是varchar类型,里面是数字,现在到099,下一个就0100,然后再查最大的时候,还是查到099最大,怎么让查到0100才是最大?
[最优解释]
如果都是数字的话 那就cast(字段 as int)
字符串的话他是比较第一位第一位相同比较第二位
[其他解释]
你这种情况,varchar类型是不能直接比较的,必须转换成int型。比如 cast(字段 as int) \convert(int 字段) 字段*1 都是转换类型,再进行比较
[其他解释]
cast(字段 as 数据类型)或者convert(数据类型,字段)
字段是需要转换的字符
数据类型是转换后的类型
[其他解释]
字符串的比较原理首先要搞清楚,先比较第一个字母的ascii,如果相同,再比较第二个字母的Ascii。很明显099与0100,第二个字母9 的ascii是39H,而1的ascii是31H,那么自然是099大。
要比较的花,建议转换为数值类型的
[其他解释]
你这存放会不会有点奇怪啊?为什么不是100而是0100呢?要么你就保持4位,要么保持3位,位数经常变化处理起来很痛苦
[其他解释]select max(convert(int,'099'))
把'099' 替换成你想要比较的字段即可
[其他解释]楼主可以用两个字段,数据类型都是int,第一个字段只放0,第二个字段自增,显示的时候两个字段结合起来,转换成varchar类型即可。这样排序的时候不用转换类型,直接使用第二个字段,更有效率。
[其他解释]select max(字段*1) from tb
[其他解释]1楼正解
[其他解释]类型转换后比较,
否则字符的 9肯定比1大啦
[其他解释]用convert 转换后再用max
[其他解释]CAST 转换成int 再比较就可以了