T-SQL Len功能无法按预期工作

时间:2013-10-03 12:15:18

标签: sql tsql sql-server-2008-r2

我正在使用Microsoft SQL Server(如果重要的话,请使用2008 R2)

执行时

select LEN('test')

我按预期得到4

但是现在试试这个:

declare @s varchar
set @s='test'
select LEN(@s)

结果是...... 1

它是如何运作的?

3 个答案:

答案 0 :(得分:5)

那是因为如果你要

SELECT @s 

它将返回

t

只。您需要指定长度。

来自char and varchar (Transact-SQL)

  

在数据定义或变量声明中未指定n时   声明,默认长度为1.使用时未指定n   CAST和CONVERT函数,默认长度为30。

SQL Fiddle DEMO

答案 1 :(得分:4)

定义时:

declare @s varchar

你得到的varchar 只有一个字符长度

LEN绝对没有错!

当您定义varchar变量

时,您需要做的是指定明确的长度
declare @s varchar(20)
set @s='test'
select LEN(@s)

现在你应该从LEN ...

取回4

注意:当您使用varchar时,始终指定长度建议的最佳做法 - 否则您将遇到这些意外情况。 ....

答案 2 :(得分:0)

你必须将它声明为nvarchar,并且超过1个char 试试这个,它有效:

declare @s nvarchar(100)