日期:2014-05-18 浏览次数:20546 次
declare @MyStr1 char(5) set @MyStr1 = 'abc' print len(@MyStr1) go
declare @MyStr1 char(10) declare @MyStr2 char(10) declare @MyStr3 char(20) set @MyStr1 = 'abc' set @MyStr2 = 'qwer' set @MyStr3 = stuff(@MyStr1, 2, 0 ,@MyStr2) print @MyStr3 go
--输出的结果是3 --但 --你之前的声明变量 declare @MyStr1 varchar(10) declare @MyStr2 varchar(10) declare @MyStr3 varchar(20) go --我的生命变量 declare @MyStr1 varchar(10) declare @MyStr2 varchar(10) declare @MyStr3 varchar(20) set @MyStr1 = 'abc' set @MyStr2 = 'qwer' set @MyStr3 = stuff(@MyStr1,2,0,@MyStr2) print @MyStr3 --我的结果 aqwerbc --原因: char(x)是为这个变量申请x字节的空间,但存储的字符不够x字节,用空格补上 varchar(x)是为这个变量申请x字节的空间,但是存入的字符占用多少个字节就是多少个字节 多余的系统收回 go
------解决方案--------------------
len()函数返回的是除去右边空格后的字符数