Poo*_*oli 3 xml sql sql-server
我试图从传递给存储过程的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
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是,尽管当元素包含true或false值时上述内容正确返回,而元素不包含任何值,因此我期望为null,但它返回false。有没有办法正确获取数据类型为可为空的位值?
如果您将XQuery更改为以下内容:
SELECT @SearchFilter.value('(/KeywordSearch/SelfEmployed/text())[1]', 'varchar(100)')
Run Code Online (Sandbox Code Playgroud)
那么您将获得NULL回值。由于您正在检查<SelfEmployed>节点是否具有任何文本值,因此应将解释.value()为字符串类型-我在varchar(100)这里使用-根据需要进行调整。