select × from 
(
  SELECT A.NAME  , (A.NAME / 200) AS Y ,(A.NAME - FLOOR(A.NAME/200)*200) AS X FROM METAATTR A, METAATTRCLS B
  WHERE A.MASTERI=B.ERI AND B.CODE='0001' 
)C  WHERE  X>20 ORDER BY Y DESC
这样一个sql 查询语句, 通过x 虚拟字段筛选, y字段排序运行提示这样的错误:
在将 varchar 值 '無壓線' 转换成数据类型 int 时失败。
请高手看看应该怎样修改!

解决方案 »

  1.   

    select × from 

      SELECT A.NAME  , (A.NAME / 200) AS Y ,(A.NAME - FLOOR(A.NAME/200)*200) AS X FROM METAATTR A, METAATTRCLS B 
      WHERE A.MASTERI=B.ERI AND B.CODE='0001' and isnumeric(a.name)=1
    )C  WHERE  X>20 ORDER BY Y DESC 
      

  2.   


      WHERE A.MASTERI=B.ERI AND B.CODE='0001' 
    看一下CODE字段里面的内容
      

  3.   

    --
    A.NAME是varchar?
    A.NAME/200
      

  4.   

    转换下
    cast(字段 as int)
      

  5.   

    SELECT A.NAME  , (A.NAME / 200) AS Y ,(A.NAME - FLOOR(A.NAME/200)*200) AS X FROM METAATTR A, METAATTRCLS B WHERE A.MASTERI=B.ERI AND B.CODE='0001'  ORDER BY Y DESC这样结果是OK的!
      

  6.   


    select NAME ,Y ,X from 
    (
      SELECT A.NAME  , (A.NAME / 200) AS Y ,(A.NAME - FLOOR(A.NAME/200)*200) AS X FROM METAATTR A, METAATTRCLS B
      WHERE A.MASTERI=B.ERI AND B.CODE='0001' 
    )C  WHERE CAST(X   AS   VARchar(10)) >'20'  ORDER BY Y DESC
    这样是报同样的错