declare @s varchar(50)
declare @s1 varchar(50)
set @s=char(98)+char(76)+char(135)
set @s1=char(98)
set @s1=@s1+char(76)
set @s1=@s1+char(135)
print @s
print @s1
输出来的结果完全不一样,为什么?请指点!

解决方案 »

  1.   

    直接执行,没看出有什么不同...declare @s varchar(50)
    declare @s1 varchar(50)
    set @s=char(98)+char(76)+char(135)
    set @s1=char(98)
    set @s1=@s1+char(76)
    set @s1=@s1+char(135)
    print @s
    print @s1/*
    bL‡
    bL‡
    */
      

  2.   

    declare @s varchar(50)
    declare @s1 varchar(50)
    set @s=char(98)+char(137)+char(76)+char(137)+char(98)+char(152)
    set @s1=char(98)
    set @s1=@s1+char(137)
    set @s1=@s1+char(76)
    set @s1=@s1+char(137)
    set @s1=@s1+char(98)
    set @s1=@s1+char(152)
    print @s  b乱码
    print @s1  bLb
      

  3.   

    奇怪,还是没问题declare @s varchar(50)
    declare @s1 varchar(50)
    set @s=char(98)+char(137)+char(76)+char(137)+char(98)+char(152)
    set @s1=char(98)
    set @s1=@s1+char(137)
    set @s1=@s1+char(76)
    set @s1=@s1+char(137)
    set @s1=@s1+char(98)
    set @s1=@s1+char(152)
    print @s -- b乱码
    print @s1 -- bLb/*
    b‰L‰b˜
    b‰L‰b˜
    */
      

  4.   

    就算真的2000不一样,也说得过去啊,2005开始sqlserver大改过,很有可能这里就被改动过。
      

  5.   


    08r2的结果:
    一种,char(135) 显示问号,另一种空白declare @s varchar(50)
    declare @s1 varchar(50)
    set @s=char(98)+char(99)+char(100)
    set @s1=char(98)
    set @s1=@s1+char(99)
    set @s1=@s1+char(100)
    print @s
    print @s1
    declare @a varchar(50)
    declare @b varchar(50)
    set @a='a'+char(135)
    print @a
    set @b='a'
    set @b=@b+char(135)
    print @b---------------
    bcd
    bcd
    a?
    a
      

  6.   

    想实现带问号的话,这样做:declare @question varchar(10)
    set @question='?'
    所有需要用到 char(135)的地方,全部用 @question 代替。
      

  7.   

    不行的,因为要用到的是ascii那256个字符,不一定是char(135)啊
      

  8.   

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