Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取XML文件(存储在SQL DB中)的大小?_Sql_Sql Server_Xml - Fatal编程技术网

如何获取XML文件(存储在SQL DB中)的大小?

如何获取XML文件(存储在SQL DB中)的大小?,sql,sql-server,xml,Sql,Sql Server,Xml,在我的数据库中,数据以二进制格式存储,通过SQL查询,我在查询中使用CAST将其转换为XML 现在,我想通过添加另一列来获取SQL中的XML文件 注意:我不想导出文件位置中的那些数据,因为它有大量记录 使用的查询: select AR.Column1, AR.Column2, CAST (Message as XML) AS "XML FILE" from [dbo].[Table1] AP INNER JOIN [DBName].[dbo].[Table2] AR

在我的数据库中,数据以二进制格式存储,通过SQL查询,我在查询中使用CAST将其转换为XML

现在,我想通过添加另一列来获取SQL中的XML文件

注意:我不想导出文件位置中的那些数据,因为它有大量记录

使用的查询:

select 
  AR.Column1, 
  AR.Column2, 
  CAST (Message as XML) AS "XML FILE"
from 
  [dbo].[Table1] AP 
  INNER JOIN [DBName].[dbo].[Table2] AR ON AR.Column1=AP.Column1 
where 
  (AR.InsertedDate BETWEEN '2019-11-19 00:00:00.000' AND '2019-11-19 23:59:59.477') 
  and AR.Column2='Delta' order by InsertedDate desc

DATALENGTH
在与可以存储可变长度数据的数据类型一起使用时非常有用,例如:

图像
ntext
nvarchar
文本
varbinary
瓦尔查尔

选择AR.Column1、AR.Column2、,
将(消息转换为XML)转换为“XML文件”,

当DATALENGTH(Message)1024和DATALENGTH(Message)1048576以及DATALENGTH(Message)1073741824和DATALENGTH(Message)时,从您的问题中我仍然不清楚您想要的是什么,但XML或二进制列的大小(以字节为单位)可以通过
DATALENGTH
确定。是的,您可以得到它,因为文件大小是整数value@ManiRaghavendra你能用预期的数据和样本输入发布新问题吗?
SELECT AR.Column1, AR.Column2, 
       CAST (Message as XML) AS "XML FILE",
       CASE WHEN DATALENGTH(Message) <= 1024 THEN CONVERT(NVARCHAR, DATALENGTH(Message)) + ' BYTES'
            WHEN DATALENGTH(Message) >1024 AND DATALENGTH(Message) <= 1048576 THEN CONVERT(NVARCHAR, DATALENGTH(Message)/1024) + ' KB'
            WHEN DATALENGTH(Message) >1048576 AND DATALENGTH(Message) <= 1073741824 THEN   CONVERT(NVARCHAR, DATALENGTH(Message)/1048576) + ' MB'
            WHEN DATALENGTH(Message) >1073741824 AND DATALENGTH(Message) <= 109951162777  THEN   CONVERT(NVARCHAR, DATALENGTH(Message)/1073741824) + ' GB'
            ELSE CONVERT(NVARCHAR, DATALENGTH(Message)/109951162777) + ' TB' END AS "XML FILE SIZE"
FROM  [dbo].[Table1] AP 
INNER JOIN [DBName].[dbo].[Table2] AR ON AR.Column1=AP.Column1 
WHERE  (AR.InsertedDate BETWEEN '2019-11-19 00:00:00.000' AND '2019-11-19 23:59:59.477') 
       AND AR.Column2='Delta' 
ORDER BY InsertedDate DESC