2009-12-08 4 views
3

Donc, dans cet exemple, j'essaie de retourner un NULL au lieu d'un nvarchar vide pour element2 et element3. Je n'arrive pas à trouver une réponse à cela n'importe où, ou même si c'est possible. Je sais que je peux vérifier .exists() avec un nullif de Case/When, mais je préfère ne pas faire cette vérification pour des raisons de performance.SQL Server xQuery retourne NULL au lieu de vide

 
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

Je ne sais pas où SQL Server correspond à cela, car le code est lié à WMI – MartW

Répondre

3

Je ne suis pas sûr de ce que la langue que vous écrivez dans de votre question, mais SQL Server a une fonction NullIf(val, CheckValue). Si vous pouvez inclure dans SQL vous passez au serveur qui devrait faire l'affaire:

Select NullIf(element2, '') 

retourne une valeur nulle si element2 est égal à une chaîne vide (« »)

+0

Je n'ai pas entendu parler de NullIf, mais il semble que isNull aurait la même fonctionnalité. –

+0

Cela fonctionne très bien, car s'il ne correspond pas, il renvoie la valeur de la xquery au lieu de null. Excellent, j'ai exclu nullif trop tôt. – SamuelWarren

+2

@Sonny Boy, IsNull (a, b) renvoie b si a est nul, NullIf (a, b) renvoie Null si a = b –

Questions connexes