sql语句取字符串字段最大值有问题!(100)

  • 主题发起人 主题发起人 zgp2000
  • 开始时间 开始时间
Z

zgp2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我在ACCESS数据库中,查字符串字段最大值感觉有点不对,有时候查出的最大值不是最大的,比他大的多的是!select max(val(id)) as aa from bbbsql 2000数据库中:select max(id) as aa from bbb 同样也存在如此问题不知道有什么办法可以解决,我这个字段是字符串型的,我要取其中数字的最大值
 
不会吧。
 
这个是不是和字段的类型有关啊?如果是数字类型的,不应该出现这个问题啊.
 
1到1000字符串排序和整数排序是不一样的,不信的话你可以测试一下。你要把字符串转为整数再排序。
 
如果都是数字那不好办,问题是现在里面不都是数字的
 
哈哈,那你取最大的依据是什么,自己写函数实现吧sql的max是针对同一数据类型有效,如果不是有序的数据类型,就按ascII走了
 
1:max主要是用于对数字的最大值2:你有数字和字符的,那你如何判断什么是最大值3:比如上面说的1到1000的字符串,排序是第一位是1的在最前面,就是按照ASCII走的,然后才到2开头一直到9开头.4:你说的意思就是你有自己想到的排序规则,如果你有自己的判断规则,你只有自己编写规则来实现.在SQL里他的排序正如楼上说的,如果不是有序的数据类型,就按ascII走
 
所以不要动不动就怀疑这个或那个有bug,多想想自己的问题才是正理
 
在sql 2000数据库中, 用SELECT MAX(CAST(id AS INT)) AS aa FROM bbb 试试.
 
里面不都是数字的 你就要转为数字,用替换函数把非数字替换为空。
 
chengducai的方法如果字段里面有非数字字符就会报错
 
SELECT MAX(CAST(id AS INT)) AS aa FROM bbb where isnumeric(id )=1
 
msglzcx的方法我试过在sql 2000中是可行的,但是如果数据库是ACCESS怎么办?
 
查一下字典 看看 用到的几个函数 在 access中的用法
 
多人接受答案了。
 

Similar threads

回复
0
查看
848
不得闲
回复
0
查看
1K
不得闲
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
后退
顶部