我希望看到xml文件的大小(以字节为单位)。
该列已定义:
[XmlFile] NVARCHAR (MAX) NOT NULL,
为了看大小,我做了:
SELECT
...
DATALENGTH(XmlFile) As SizeInBytes
我做了一个简单的测试:
XmlFile = 'ciao', SizeInBytes (sql): 8, Saving the file in my desktop: 4bytes
XmlFile = '', SizeInBytes (sql): 0, Saving the file in my desktop: 0bytes
XmlFile = 'TestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTestTest', SizeInBytes (sql): 176, Saving the file in my desktop: 88bytes
为什么我有这些违规行为?我做错了吗?如何确定结果的正确性?
答案 0 :(得分:1)
因为您的数据类型为NVARCHAR
。
DATALENGTH(NVARCHAR) = 2*DATALENGTH(VARCHAR)
。
您可以查看以下代码:
SELECT DATALENGTH('c') -- varchar
SELECT DATALENGTH(N'c') -- nvarchar
答案 1 :(得分:0)
NVarChar
以UTF-16方式存储字符串,这意味着每个字符每个占用2个字节。
DATALENGTH
将为您提供字段占用的字节数。
您的文件长度与从SQL Server获得的文件长度不同,因为文件的编码不同(可能是UTF-8或ANSI)。如果将文件保存中的编码更改为UTF-16,则长度相同。