数据库中有一列值,列默认声明为文本型,但其实列的值都是数字型的。我现在想写sql语句判断列值大于5,小于100,怎么写啊?不知道怎么处理,会出现类型问题。

解决方案 »

  1.   

    sql 条件
    CInt(你那列) > 5 and CInt(你那列) < 10
      

  2.   

    接1楼,换这个
    CLng(你那列) > 5 and CLng(你那列) < 10
      

  3.   

    access有 Cint
    sqlserver 有 cast ... as int
      

  4.   

    CLng() 这个函数的参数可以输入列名,然后执行 sql 语句时就把这列转换成 数值类型 处理。
      

  5.   


    mySelect = string.Format(@"SELECT * FROM Sheet1 WHERE CLng(cloud_height) > 5 and CLng(cloud_height) < 10");这么写吗?不能执行,提示myda.Fill(myds) 的值为NULL。
      

  6.   

    我试了 CLng 能转文本类型进行比较的,你能不能贴下全部查询的代码?
      

  7.   

    不知如何写:mySelect = string.Format(@"SELECT * FROM Sheet1 WHERE cint(cloud_height)<10 ");语法是错误的,没有值。
      

  8.   


    ACCESS数据库中cloud_height列是文本型的,值如下:1、20、5、10、30...都是数字类的。
    现想查找cloud_height数值在5-10之间的。代码如下                Connection();//调用数据库连接函数
                    mySelect = string.Format(@"SELECT * FROM Sheet1 WHERE CLng(cloud_height) > 5 and CLng(cloud_height) < 10);
                    mycmd = new OleDbCommand(mySelect, mycon);
                    myda = new OleDbDataAdapter(mycmd);
                    myds = new DataSet();
                    myda.Fill(myds);
                    dataGridView3.DataSource = myds.Tables[0];
    提示myda.Fill(myds); 无效的NULL使用
      

  9.   

    我试了,那列里有 null 值提示这个异常,null 你准备怎么判断?
      

  10.   

    如果那列为null的不要,就这样
    mySelect = string.Format(@"SELECT * FROM Sheet1 WHERE CLng(IIf(IsNull(cloud_height),'-1',cloud_height)) > 5 and CLng(IIf(IsNull(cloud_height),'-1',cloud_height)) < 10)");
      

  11.   


    是有空值null,应该先查询非空值的数据,然后再判断。就像你上面写的。
    哈哈 很感谢 深夜帮我解决
      

  12.   

    SELECT * FROM Sheet1 WHERE CLng(IIf(IsNull(cloud_height),'-1',cloud_height)) > 5 and CLng(IIf(IsNull(cloud_height),'-1',cloud_height)) < 10)");[