string sql="SELECT q_id,mc_id FROM multi_choice_question WHERE q_id='"+Session["maintain_quiz_id"].ToString()+"' ORDER BY mc_id ASC";mc_id在数据库里面的类型是Text,范围是1-20之间的整数。如果我想搜索结果按mc_id从小到大排列,sql语句应该怎样改动呢?

解决方案 »

  1.   

    不知道你用的是什么数据库,但是基本有两个方法你可以试一下。
    第一个是将 mc_id 转化成 数值型的数据,就是在你的SQL中最后排序的时候,先将这列转化成数值型的,不同的数据类型转换函数不一样,你可以自己查一下;
    第二个方法就是在保存 mc_id 的时候将数据格式化成 两位长的,不足两位的在前面补“0”,这样你的SQL就可以直接用了。
      

  2.   

    首先,如果你这个例想表示数值,建议用bigint,
    text服务器代码页中的可变长度非 Unicode 数据的最大长度为 231-1 (2,147,483,647) 个字符。当服务器代码页使用双字节字符时,存储量仍是 2,147,483,647 字节。存储大小可能小于 2,147,483,647 字节(取决于字符串)。
      

  3.   

    select * from qb_log order by string sql="SELECT q_id,mc_id FROM multi_choice_question WHERE q_id='"+Session["maintain_quiz_id"].ToString()+"' ORDER BY  CAST(mc_id AS int(20)) ASC";
      

  4.   

    我用的是MS ACCESS数据库。jianjian54说的那个函数,我试过运行不了。还有其他方法吗?
      

  5.   

    既然是整数..那就转换下不就得了...CAST..
      

  6.   

    用cast,上面有兄弟给了答案了。是整数,为何用text格式,不解