declare @s varchar(50)
declare @s1 varchar(50)
set @s=char(137)+char(76)
set @s1=char(137)
set @s1=@s1+char(76)
print @s    --这里输出一个像莹字一样的乱码
print @s1   --而这里却输出一个L
上面的输出为什么不同,另,我要用@x=@x+char(y)的方式达到输出@s的效果,怎样弄?

解决方案 »

  1.   

    declare @s varchar(50)
    declare @s1 varchar(50)
    set @s=''
    set @s=@s+char(137)+char(76)
    set @s1=char(137)
    set @s1=@s1+char(76)
    print @s  --这里输出一个像莹字一样的乱码
    print @s1  --此处也是莹字
    -----

      

  2.   

    楼上的,你的是数据库是什么版本的,是sql2000的吗?如果不是的话,你可以换sql2000试一试
      

  3.   

    要找方法,不要找借口,难道sql2000不能实现吗?
      

  4.   

    我用sql2005试了,也不行的,即@s=@s+char(x1..n)与@s=char(x1)+...+char(xn)结果是不同的
      

  5.   

    http://bbs.csdn.net/topics/390589538
    char其实不只是这个作用
      

  6.   

    回复于: 2013-09-13 09:53:38 
    楼上的,你的是数据库是什么版本的,是sql2000的吗?如果不是的话,你可以换sql2000试一试 我是用的sql2005 
      

  7.   

    个人感觉还是sql2000版本的问题,在sql2005中处理的情况貌似和DB2数据库中的相近,而在sql2000中则不行。
      

  8.   

    版本问题,试了sql2008,sql2008R2 都是乱码,可以肯定是版本问题
      

  9.   


    我在sql server 2008r2执行竟然都返回NULL,我把我的sql server 2008r2的数据库的兼容性调成了2000的,把代码修改了一下,就可以正常显示了:declare @s nvarchar(50)
    declare @s1 nvarchar(50)set @s=nchar(137)+nchar(76)
    set @s1=nchar(137)
    set @s1=@s1+nchar(76)--网上查了一下,char(137)是 ‰,修改为nchar(137)后显示为‰L ,复制出来就成L了。print @s    --这里输出一个像莹字一样的乱码
    print @s1   --而这里却输出一个L/*
    ‰L
    ‰L
    */