【发布时间】:2022-12-08 10:01:46
【问题描述】:
我有一列包含以下数据:SMITH SMITH SMITH SMITH SMITH。从表中执行 SELECT DATALENGTH 时,我得到的值为 72。
但是,当我复制列数据并将其弹出到如下所示的 select 语句中时,我得到的长度为 36。
SELECT DATALENGTH('JUDITH KOSGEY JUDITH JEPKORIR KOSGEY')
可能的原因是什么?我没有在本文中看到任何额外的空格或特殊字符。
【问题讨论】:
-
如果你做
CONVERT(varbinary(150),YourColumn),你会得到什么? -
@larnu 0x4A0055004490049004800480048004B004B004F004F005300477004590045900590020004a005500444900480048004800480020004AA,
-
我用
SELECT DATALENGTH(N'JUDITH KOSGEY JUDITH JEPKORIR KOSGEY');得到 72。请注意 Unicode 常量前缀,因此该列似乎是nvarchar。 -
那不是
'SMITH SMITH SMITH SMITH SMITH'....它是N'JUDITH KOSGEY JUDITH JEPKORIR KOSGEY'...即使它是'JUDITH KOSGEY JUDITH JEPKORIR KOSGEY'也会返回DATALENGTH的36不是29... -
@Larnu 我已经编辑了我的问题。我看到我复制了不正确的值。应该是 JUDITH KOSGEY JUDITH JEPKORIR KOSGEY
标签: sql sql-server datalength