DATALENGTH()适用于文字,但不适用于变量。

问题描述 投票:0回答:1

select datalength(cast('12345' as nvarchar)) 查询返回10(这是确定的),但

declare @string as nvarchar
set @string = cast('12345' as nvarchar)
select datalength(@string)

返回 2 而不是 10。如何使用DATALENGHT()来确定存储在变量中的字符串的datalength?

sql-server sql-server-2017
1个回答
3
投票

总是指定长度 n 的字符数据。

declare @string as nvarchar(30)
set @string = cast('12345' as nvarchar(30))
select datalength(@string)

不这样做的行为在文档中有所描述。

当数据定义或变量声明语句中没有指定n时,默认长度为1。 当CAST函数没有指定n时,默认长度为30。

nchar 和 nvarchar

© www.soinside.com 2019 - 2024. All rights reserved.