数据库使用SQL Server 2005。怎么没人回答啊??

解决方案 »

  1.   

    提示已经明显了:无法将vachar转换为numeric
      

  2.   

    select top 1  from T_recordCode where recordtype='1' order by convert(numeric,recordcode) desc 
    改为
    select top 1 * from T_recordCode where recordtype='1' order by convert(numeric,recordcode) desc 
    后四个句子我执行都正常啊.
      

  3.   

    select top 1 recordcode from T_recordCode where recordtype=1 order by convert(numeric,recordcode) desc
    select *  from T_recordCode where recordtype='1' order by convert(numeric,recordcode) desc 
    但是我这样执行没问题啊。这是为什么啊?
      

  4.   

    select top 1 recordcode from T_recordCode where recordtype='1' order by convert(numeric,recordcode) desc 
    这句你也成功执行了啊?
      

  5.   

    同意3楼的,我测试也是这样,加个*号,测试通过。
    你是不是recordcode里面含有不能专程数值型的字符?
      

  6.   

    没有啊,像
    select top 1 recordcode from T_recordCode where recordtype=1 order by convert(numeric,recordcode) desc 
    这样就可以成功执行了啊。 recordtype=1没有加单引号的方式。而加了单引号后却报错了。
    加*号当然可以执行成功了,但我问的不是这个,是执行不成功的语句,为什么会不成功呢?两条语句就差一个单引号,这会有什么区别吗?
      

  7.   

    加单引号结果上没什么区别,系统会隐式转换的,就像datetime类型与字符串型的日期比较一样.
      

  8.   


    跟安装SQL时设置的默认排序有关系.
      

  9.   

    declare @t table(RecordType char(1) COLLATE Chinese_PRC_CI_AS NULL)
    insert @t select 1
    union all select 2select * from @t where RecordType=1
    /*
    RecordType
    ----------
    1(1 行受影响)
    */
    select * from @t where RecordType='1'
    /*
    RecordType
    ----------
    1(1 行受影响)
    */在我的环境测试都可以.