【问题标题】:DATALENGTH() works on literals but doesn't work on variablesDATALENGTH() 适用于文字,但不适用于变量
【发布时间】:2020-06-10 18:02:39
【问题描述】:

select datalength(cast('12345' as nvarchar)) 查询返回 10(这没问题),但是

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

返回 2 而不是 10。为什么?如何使用 DATALENGHT() 确定存储在变量中的字符串的数据长度?

【问题讨论】:

    标签: sql-server sql-server-2017


    【解决方案1】:

    始终指定字符数据的长度n。例如

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

    文档中描述了如果您不这样做的行为:

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

    nchar and nvarchar

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-06
      • 2013-12-17
      • 1970-01-01
      • 1970-01-01
      • 2020-05-04
      • 2020-01-09
      • 2014-04-19
      相关资源
      最近更新 更多