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
由于上面的结果不同,而我要在自定义的函数中通过循环语句取得字符串串联@s的结果,请问怎样实现?

解决方案 »

  1.   

    select char(98)+char(137)+char(76)+char(137)+char(98)+char(152)
    /*
    NULL
    */select char(137)  --ascii=137是个空值
    /*
    NULL
    */任何一个值空值相加结果都是空的
      

  2.   

    你试试把最前两行改成
    declare @s nvarchar(50)
    declare @s1 nvarchar(50)
      

  3.   

    试过了,不行的,nchar也试了
      

  4.   

    这样写结果相同,declare @s nvarchar(50)
    declare @s1 nvarchar(50)set @s=nchar(98)+nchar(137)+nchar(76)+nchar(137)+nchar(98)+nchar(152)
    set @s1=nchar(98)
    set @s1=@s1+nchar(137)
    set @s1=@s1+nchar(76)
    set @s1=@s1+nchar(137)
    set @s1=@s1+nchar(98)
    set @s1=@s1+nchar(152)print @sprint @s1
      

  5.   


    declare @a varchar(50)
    declare @b varchar(50)set @a=char(135)
    print '---print @a---'
    print @a
    print '----over----'print '---print @a=@a+char(97)---'
    set @a=@a+char(97)print @a
    print '-------over---------'print '------print char(135)+char(97)--------'
    set @b=char(135)+char(97)
    print @b
    print '----over----'
     print '------print char(97)+char(135)--------'
    set @b=char(97)+char(135)
    print @b
    print '----over----'
    -----------输出结果--------------
    ---print @a---
    ?
    ----over----
    ---print @a=@a+char(97)---

    -------over---------
    ------print char(135)+char(97)--------

    ----over----
    ------print char(97)+char(135)--------
    a?
    ----over----
      

  6.   

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