2012-04-10 82 views
1

我有一个要求,我想要从xml数据类型搜索数据,从前端我会得到名字,姓氏,dob,电子邮件所有字段都不是强制性的某些字段将作为空或空我想根据,如果我会得到名字为“测试”和姓氏,我会得到如空白或空XML数据类型的搜索查询

搜索如果它是一个varchar数据类型的话,我可以创建查询作为

FirstName= ISNULL(@firstname, FirstName) or COALESCE(@firstname, FirstName, '') = '') 

但在XML文档中,我如何使用这种类型的查询。

xmlDoc.value('(/personalDetails/firstname)[1]','varchar(100)') 

感谢

回答

0

在2008年SQLSERVER,我会写这样的:

select 
    xmlDoc.value('(personalDetails/firstname/text())[1]','varchar(100)') as firstname 
from 
    myTable 
where 
    not xmlDoc is null 
    and xmlDoc.exist('personalDetails/firstname[.!='''']')>0 

你也可以做一个CASE WHEN ... ELSE ...如果你想返回NULL END对于不存在的值