我正在使用Microsoft SQL Server(如果重要的话,请使用2008 R2)
执行时
select LEN('test')
我按预期得到4
但是现在试试这个:
declare @s varchar
set @s='test'
select LEN(@s)
结果是...... 1
它是如何运作的?
答案 0 :(得分:5)
那是因为如果你要
SELECT @s
它将返回
t
只。您需要指定长度。
来自char and varchar (Transact-SQL)
在数据定义或变量声明中未指定n时 声明,默认长度为1.使用时未指定n CAST和CONVERT函数,默认长度为30。
答案 1 :(得分:4)
定义时:
declare @s varchar
你得到的varchar
只有一个字符长度。
LEN
绝对没有错!
当您定义varchar
变量
declare @s varchar(20)
set @s='test'
select LEN(@s)
现在你应该从LEN
...
注意:当您使用varchar
时,始终指定长度是建议的最佳做法 - 否则您将遇到这些意外情况。 ....
答案 2 :(得分:0)
你必须将它声明为nvarchar,并且超过1个char 试试这个,它有效:
declare @s nvarchar(100)