2009-12-08 187 views
3

因此,在此示例中,我试图为element2和element3返回NULL而不是空的nvarchar。我似乎无法在任何地方找到答案,或者甚至有可能。我知道我可以使用Case/When的nullif来检查.exists(),但为了表现的缘故,我宁愿不做此检查。SQL Server xQuery返回NULL而不是空

 
WqlEventQuery query = new WqlEventQuery(); 
     query.EventClassName = "__InstanceCreationEvent"; 
     query.Condition = "TargetInstance ISA 'Win32_NTLogEvent'"; 
     query.GroupWithinInterval = new TimeSpan(0, 0, 10); 
     System.Collections.Specialized.StringCollection collection = 
      new System.Collections.Specialized.StringCollection(); 
     collection.Add("TargetInstance.SourceName"); 
     query.GroupByPropertyList = collection; 
     query.HavingCondition = "NumberOfEvents > 25"; 
+1

不知道在哪里的SQL Server适合这个,因为代码是WMI相关的 – MartW

回答

3

我不知道你是从你的问题写在什么语言,但SQL Server有一个NullIf(val, CheckValue)功能。如果你可以包括在你传递给服务器应该做的伎俩的sql:

Select NullIf(element2, '') 

会返回一个空如果在element2等于一个空字符串(“”)

+0

我还没有听说过NullIf,但它看起来像isNull将具有相同的功能。 –

+0

这很好用,因为如果它不匹配,它将返回xquery的值而不是null。很好,我很快就排除了nullif。 – SamuelWarren

+2

@Sonny Boy,如果a为null,则IsNull(a,b)返回b;如果a = b,则NullIf(a,b)返回Null –