SELECT * FROM ages WHERE (kmdm >= 0) 
kmdm是表ages中的一列,属性是char(16),在sql数据库里直接运行该语句没有问题,放在adoquery1.sql里面,执行后错误提示:varcha值‘12345678901’的转换溢出了int列。超出了最大整值。当ages表里面没有11位以上的数据,就没有错误提示,请大家帮忙解决,谢谢

解决方案 »

  1.   

    char是固定长度的非 Unicode 字符数据.
    SELECT * FROM ages WHERE (kmdm >= 0) 不知道是什么意思,
    SELECT * FROM ages WHERE (kmdm >= '0') 这样试试
    另外把ADOQuery的字段全部删除再建立.
      

  2.   

    SELECT * FROM ages WHERE (kmdm >= '0') 这样试试,这样的话是可以执行的,而且结果没有错误,但是我想把kmdm小于等于100的都显示出来的时候用SELECT * FROM ages WHERE (kmdm < '101')这个语句,就只能得到的记录是1-19,还有100。不知道该怎么解决,谢谢
      

  3.   

    SELECT * FROM ages WHERE (CAST(kmdm AS INTEGER) < 101)
      

  4.   

    如果kmdm很长,都是数字,你可以用 SELECT * FROM ages WHERE (CAST(kmdm AS bigint) < 101)
      

  5.   

    CAST(kmdm AS INTEGER)没用,用了CAST(kmdm AS bigint)解决了,谢谢大家,结贴了