SQL中字符串数字比较 存放的字段是varchar类型,里面是数字,现在到099,下一个就0100,然后再查最大的时候,还是查到099最大,怎么让查到0100才是最大? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果都是数字的话 那就cast(字段 as int)字符串的话他是比较第一位第一位相同比较第二位 select max(字段*1) from tb 你这种情况,varchar类型是不能直接比较的,必须转换成int型。比如 cast(字段 as int) \convert(int 字段) 字段*1 都是转换类型,再进行比较 cast(字段 as 数据类型)或者convert(数据类型,字段)字段是需要转换的字符数据类型是转换后的类型 字符串的比较原理首先要搞清楚,先比较第一个字母的ascii,如果相同,再比较第二个字母的Ascii。很明显099与0100,第二个字母9 的ascii是39H,而1的ascii是31H,那么自然是099大。要比较的花,建议转换为数值类型的 select max(convert(int,'099'))把'099' 替换成你想要比较的字段即可 楼主可以用两个字段,数据类型都是int,第一个字段只放0,第二个字段自增,显示的时候两个字段结合起来,转换成varchar类型即可。这样排序的时候不用转换类型,直接使用第二个字段,更有效率。 CAST 转换成int 再比较就可以了 【求助】找一个说明简易的SQL帮助 指教....多表关联操作。 一条SQL语句能搞定吗? 这个不知道算不算交叉表,不知道怎么做,请朋友帮忙看看。 如何将一个schema下的所有表、存储和视图copy到我新建的一个schema下 sql 分组后取每组按时间排序的前三条记录写法在前台分页速度慢 ===关于count和sum利用case写法求教=== 有点复杂的查平均分问题 解决就加分,这样的语句在存储过程中如何实现(急) bcp问题 高分求 格式字符串提取数值 动态sql
cast(字段 as 数据类型)或者convert(数据类型,字段)
字段是需要转换的字符
数据类型是转换后的类型
要比较的花,建议转换为数值类型的