【发布时间】:2019-11-21 09:54:16
【问题描述】:
在 case 语句中无法将 varchar 转换为二进制。 我曾经从 xml 读取数据并尝试在数据不为空时进行转换。
下面是示例代码
Declare @docs varchar(max)=N'<root>
<Documents>
<Document>
<DocId>1</DocId>
<DocName>DocA</DocName>
<DocContent>ABCDEFG</DocContent>
</Document>
<Document>
<DocId>2</DocId>
<DocName>DocB</DocName>
<DocContent>ABCDEFG</DocContent>
</Document>
<Document>
<DocId>3</DocId>
<DocName>DocC</DocName>
<DocContent>ABCDEFG</DocContent>
</Document>
</Documents>
</root>'
Declare @xmlDoc XML=Convert(XML,@docs)
select T.N.value('DocId[1]', 'int') AS 'DocId',
T.N.value('DocName[1]', 'varchar(max)') AS 'DocName',
CONVERT(VARBINARY(max),T.N.value('DocContent[1]', 'varchar(max)')) as 'Convering',
CASE
WHEN T.N.value('DocContent[1]', 'varchar(max)') IS NOT NULL THEN
CONVERT(VARBINARY(max),T.N.value('DocContent[1]', 'varchar(max)'))
WHEN T.N.value('DocContent[1]', 'varchar(max)') IS NULL THEN ''
ELSE T.N.value('DocContent[1]', 'varchar(max)')
END
AS 'Not Converting'
FROM @xmlDoc.nodes('/root/Documents/Document') AS T(N)
【问题讨论】:
-
CASE表达式。CaseT-SQL 中不存在语句。 -
这是
CASE表达式 @chandrarv 的文档。就像我说的,Case语句在 T-SQL 中不存在。您将找不到关于它们的文档。
标签: sql-server type-conversion