3

我正在尝试从传递给存储过程的 xml 参数中读取特定值。到目前为止,我的代码的一个粗略示例如下。

SET @SearchFilter = 
'<?xml version="1.0"?>
 <KeywordSearch xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <SelfEmployed xsi:nil="true" />
 </KeywordSearch>'

SET @SelfEmployed  = @SearchFilter.query('/KeywordSearch/SelfEmployed[1]').value('/', 'bit')

SELECT @SelfEmployed

我遇到的问题是,尽管当元素包含真值或假值时上述正确返回,而元素不包含值,因此我期望为空,但它返回假。有没有办法将数据类型正确获取为可为空的位值?

4

1 回答 1

5

如果您将 XQuery 更改为以下内容:

SELECT @SearchFilter.value('(/KeywordSearch/SelfEmployed/text())[1]', 'varchar(100)')

然后你会得到一个NULL值回来。由于您正在检查<SelfEmployed>节点是否具有任何文本值,因此您应该将其解释.value()为字符串类型 - 我在varchar(100)这里使用 - 根据需要进行调整。

于 2012-05-24T10:45:09.087 回答