Chr*_*row 2 sql t-sql sql-server-2008-r2
简单的问题 - 为什么当我@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
Run Code Online (Sandbox Code Playgroud)
你的声明@string是错误的.你没有长度varchar.
试试这个:
declare @string varchar(255); -- or whatever
Run Code Online (Sandbox Code Playgroud)
您刚刚了解到这种情况下的默认值为1.
这在文档中明确说明.另外需要注意的是,MS SQL似乎使这个变得相当复杂:
如果未在数据定义或变量声明语句中指定n,则默认长度为1.如果在使用CAST和CONVERT函数时未指定n,则默认长度为30.
正确的习惯是在使用varchar或时使用长度nvarchar.