数据库中对于string类型字段的转换查找问题 (20分)

  • 主题发起人 主题发起人 xiaocai
  • 开始时间 开始时间
X

xiaocai

Unregistered / Unconfirmed
GUEST, unregistred user!
我的库中的字段是STRING类型的,但是程序中有个功能是查询,查询中可以带有条件,
有什么>=、<=、<>、MIN、MAX....本来没考虑到,但是忽然发现有点不对,即
select * from my table where aaa>=:paramaaa......
如果库中的aaa=100,而paramaaa=10,则结果返回正常,但是如果aaa=30,paramaaa=10000
就不对了,因为integer中10000>30,但是string中10000<30,库结构已经来不及改变了
请问有仁兄有没有妙法回春啊?
我用的是ACCESS,不能用CONVERT
 
select * from table where val(aaa)>=30.....
 
val 是什么意思啊?
 
就是把String类型的转为数值,这样就可以与整数类型、浮点类型数作比较了,你先试
一下吧。
 
VAL不错,好用
现在又发生了一个怪问题
我的程序是用户多条件联合查询,用户的条件有时间和事件等
我上面的问题就是关于问事件的,如果只选择事件,那么看我的SQL
select * from table where (row=:param1)and(val(col)=(select max(val(col)) from
table where (row=:param1))) 这样返回值都正常,有几条是几条
但是再加入任意一个条件后
select * from table where (row=:param1)and(time=:param2)and
(val(col)=(select max(val(col)) from table where (row=:param1)and(time=:param2)))
返回的值总是0,怎么搞的,奇怪啊,执行都正常啊,语法也没错,就是不出现!急!
在线等待好消息....
 
看看是不是time的格式!!
 
没有问题,两个中各执行哪一个都没问题,一联合起来,中间加个AND问题就来了!
 
select * from table where val(col)=(select max(val(col)) from table where (row=:param1)and(time=:param2)))
 
to 刁么 :
不行,还是返回不了结果


 
靠,谁来救我啊,一晚上了,什么都没干!
我又开了个DELPHI,在SQLBUILDER里放上同样的句子找最大值,一下就出来了
为什么我的程序里出不来呢?疯了!
 
天啊,还没有治疗疯子的人出现吗?难道要我继续疯下去?5555~~~
 
ExecSQl--->open
 
天啊,当然是OPEN,我的代码是复用的,就是说选一选二后执行的代码
是一+二拼得的,一能正常执行,二也行,就是一+二不行,找也找不到,
做也做不下去,真烦啊!
 
没有人回答吗?是不是问题太怪了,我自己觉得很有点怪,从来没碰见过
 
接受答案了.
 
后退
顶部