读书人

SQL Server 2000 的字符串如何感觉这么

发布时间: 2012-05-15 14:35:29 作者: rapoo

SQL Server 2000 的字符串怎么感觉这么怪?
感觉实在是太灵异的,感觉字符串中的未用的字节有时候会参与运算,有时候却又很正常。
比如

SQL code
declare @MyStr1 char(5)set @MyStr1 = 'abc'print len(@MyStr1)go
输出的结果是3

SQL code
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 @MyStr3go
输出的结果是“aqwer bc ”很费解为什么这里有非常多的空格。这些未用的字节难道全部参与运算了?
还是为了提高效率所以没有进行字符串的结束检测?

[解决办法]
看看联机丛书len函数是怎么写的。

也看看联机丛书char类型是怎么样的。
[解决办法]
SQL code
--输出的结果是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()函数返回的是除去右边空格后的字符数

读书人网 >SQL Server

热点推荐