比如有一函数:
create function fn (@id nvarchar(50))
returns  nvarchar(50)
as
begin
   return @id
end
select dbo.fn(01) 得出的结果是1.
但是我想要的是select dbo.fn(0123223)得出0123223.
select dbo.fn(000111022)得出000111022怎么解决?谢谢!

解决方案 »

  1.   

    加个引号不久不可以了 
    select dbo.fn('0123223')
      

  2.   

    当你输入select dbo.fn(0123223)的时候,系统识别为输入的是数值型,会隐式转换为字符型,转换过程中就会去掉前面的0.
      

  3.   


    --你给的参数是nvarchar类型的,而你传入的饿参数是int类型的
    --肯定不是你要的结果了create function fn (@id nvarchar(50))
    returns  nvarchar(50)
    as
    begin
       return @id
    endselect dbo.fn('0123223')/*
                                                       
    -------------------------------------------------- 
    0123223(所影响的行数为 1 行)*/drop function fn 
      

  4.   

    你定义的参数是varchar的 需要有引号
      

  5.   

    INT 类型优先于NVARCHAR 放进去就直接转化成 INT 0就没了