Как получить размер файла XML (который хранится в БД SQL)? - PullRequest
0 голосов
/ 21 ноября 2019

В моей БД данные хранятся в двоичном формате, и с помощью SQL-запроса я преобразую их в XML, используя в своем запросе CAST.

Теперь я хотел бы получить XML-файл вSQL, добавив еще один столбец.

Примечание : я не хочу экспортировать эти данные в расположение файла, поскольку они имеют огромные записи.

Используемый запрос:

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

1 Ответ

1 голос
/ 21 ноября 2019

DATALENGTH становится действительно полезным при использовании с типами данных, которые могут хранить данные переменной длины, такими как:

image
ntext
nvarchar
text
varbinary
varchar

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...