2010-11-03 41 views
3

Cela me fait mal à l'esprit.Comment faire correspondre des chaînes dans une requête DB2 (z/OS)?

Tout ce que je veux faire est la comparaison de chaînes de base sur un champ long varchar.

J'ai une table d'env. 12M enregistrements.

Si je demande pour MY_FIELD='a string', j'obtiens un compte de 25947, ce qui semble à peu près juste.

Si je fais une recherche MY_FIELD!='a string', je reçois un nombre de 989.

ne devrait pas ces 2 chefs ajouter à la taille de la table pleine de 12M?

Répondre

6

Et dans combien de ces lignes MY_FIELD est-il défini sur NULL?

a. select count(*) from mytable; 
b. select count(*) from mytable where my_field is null; 
c. select count(*) from mytable where my_field is not null; 
d. select count(*) from mytable where my_field = 'some value'; 
e. select count(*) from mytable where my_field != 'some value'; 

NULL est pas égal ou inégal à une valeur, y compris NULL donc j'attendre d+e à assimiler à c et b+c à assimiler à a.

+0

Merci Pax. C'était le problème! Duh. – m2green