我正在使用 Microsoft SQL Server(如果重要,请使用 2008 R2)
当我执行
select LEN('test')
我按预期得到 4
但现在试试这个:
declare @s varchar
set @s='test'
select LEN(@s)
结果是... 1
它实际上是如何工作的?
我正在使用 Microsoft SQL Server(如果重要,请使用 2008 R2)
当我执行
select LEN('test')
我按预期得到 4
但现在试试这个:
declare @s varchar
set @s='test'
select LEN(@s)
结果是... 1
它实际上是如何工作的?
那是因为如果你要
SELECT @s
它会回来
t
只要。您需要指定长度。
从char 和 varchar (Transact-SQL)
在数据定义或变量声明语句中未指定 n 时,默认长度为 1。使用 CAST 和 CONVERT 函数时未指定 n 时,默认长度为 30。
当你定义这个时:
declare @s varchar
你得到一个恰好一个字符长度varchar
的a 。
绝对没有错LEN
!
您需要做的是在定义变量时指定显式长度varchar
declare @s varchar(20)
set @s='test'
select LEN(@s)
LEN
现在你应该从...取回 4
注意:推荐的最佳实践是在使用时始终指定长度varchar
- 否则您会遇到这些意外。……
您必须将其声明为具有超过 1 个字符的 nvarchar 试试这个,它可以工作:
declare @s nvarchar(100)