前题:
有一个数据表(MasterSingle)中的(Salesodd)字段,类型为nvarchar(50).执行以下语句发生错误--最大单号为 091216000003  
select CONVERT(int,RIGHT(ltrim(rtrim(MAX(Salesodd))),6)) from MasterSingle
/*
服务器: 消息 245,级别 16,状态 1,行 1
将 nvarchar 值 '0003
' 转换为数据类型为 int 的列时发生语法错误。*/
请问如何解决??

解决方案 »

  1.   

    将 nvarchar 值 '0003
    '?有CHAR(10)或CHAR(13)
      

  2.   

    这样试试
    select CONVERT(int,RIGHT(1000001+ltrim(rtrim(MAX(Salesodd))),6)) from MasterSingle
      

  3.   

    to:fredrickhu
    服务器: 消息 248,级别 16,状态 1,行 1
    nvarchar 值 '091216000003
    ' 的转换溢出了 int 列。超出了最大整数值。
      

  4.   

    这样试试
    select CONVERT(bigint,RIGHT(1000001+ltrim(rtrim(MAX(Salesodd))),6)) from MasterSingle
      

  5.   


    select RIGHT(max(Salesodd),6) from MasterSingle
    --能正确显为 0003
    select cast(RIGHT(max(Salesodd),6) as int) from MasterSingle
    /*
    服务器: 消息 245,级别 16,状态 1,行 1
    将 nvarchar 值 '0003
    ' 转换为数据类型为 int 的列时发生语法错误。*/
      

  6.   

    --try
    select 
    cast(replace(replace(RIGHT(max(Salesodd),6),char(10),''),char(13),'') as int) 
    from MasterSingle