日期:2014-05-17  浏览次数:20589 次

sql2000字符串串联接问题
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的结果,请问怎样实现?

------解决方案--------------------
你目前得到的@s和@s1都是null
------解决方案--------------------
select char(98)+char(137)+char(76)+char(137)+char(98)+char(152)
/*
NULL
*/

select char(137)  --ascii=137是个空值
/*
NULL
*/

任何一个值空值相加结果都是空的

------解决方案--------------------
你试试把最前两行改成
declare @s nvarchar(50)
declare @s1 nvarchar(50)
------解决方案--------------------
这样写结果相同,

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 @s

print @s1

------解决方案--------------------

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----