简单的问题 - 为什么当我在下面的查询中打印@len
变量的值时,我会得到值1而不是12(指定字符串中的字符数)?
DECLARE @string varchar
DECLARE @index int
DECLARE @len int
DECLARE @char char(1)
SET @string = 'content loop'
SET @index = 1
SET @len= LEN(@string)
print @len
答案 0 :(得分:8)
您对@string
的声明是错误的。 varchar
上没有长度。
试试这个:
declare @string varchar(255); -- or whatever
您刚刚获悉此情况下的默认值为1.
documentation中明确指出了这一点。另外需要注意的是,MS SQL似乎使这变得相当复杂:
在数据定义或变量声明中未指定n时 声明,默认长度为1.使用时未指定n CAST和CONVERT函数,默认长度为30。
正确的习惯是在使用varchar
或nvarchar
时始终包含长度。
答案 1 :(得分:2)
您需要为变量@string赋予实际长度。打印变量@string,它可能会返回'C'。
答案 2 :(得分:2)
因为没有长度规范的varChar
被视为varChar(1)
将varchar
替换为varChar(30)
或varChar(max)