tags:

views:

338

answers:

1

So in this example I'm trying to return a NULL instead of an empty nvarchar for element2 and element3. I can't seem to find an answer to this anywhere, or if it's even possible. I know I can check .exists() with a nullif of Case/When, but I'd rather not make that check for the sake of performance.

 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  A: 

I'm not sure what language you are writing in from your question, but SQL Server has a NullIf(val, CheckValue) function. If you can include that in the sql you pass to the server that should do the trick:

   Select NullIf(element2, '')

will return a null if element2 is equal to an empty string ('')

Charles Bretana
I've not heard of NullIf, but it seems like isNull would have the same functionality.
Sonny Boy
This works great, because if it doesn't match, it returns the value of the xquery instead of null. Excellent, I ruled out nullif too soon.
highphilosopher
@Sonny Boy, IsNull(a, b) returns b if a is null, NullIf(a, b) returns Null if a = b
Charles Bretana