Je dois écrire une requête qui effectue une union entre deux tables avec des données similaires. Les résultats doivent être distincts. Le problème que j'ai est que certains champs qui devraient être les mêmes ne sont pas quand il s'agit de valeurs vides. Certaines sont indiquées comme nulles et d'autres ont des valeurs de chaîne vides. Ma question est, y at-il une meilleure façon d'effectuer la requête suivante? (sans fixer les données réelles pour s'assurer que les valeurs par défaut sont définies, etc) Utilisera le cas Quand un gros coup de performance?Meilleure façon d'écrire une requête de syndication lorsque vous traitez des valeurs de chaîne vide et vide
Select
When Column1 = '' Then NULL Else Column1 as [Column1],
When Column2 = '' Then NULL Else Column2 as [Column2]
From TableA
UNION ALL
Select
When Column1 = '' Then NULL Else Column1 as [Column1],
When Column2 = '' Then NULL Else Column2 as [Column2]
From TableB
Merci pour la note sur le NULLIF. Quoi de mieux, pour retourner un '' ou NULL. – dretzlaff17
Cela dépend vraiment de ce que vous faites avec les données après l'avoir sélectionné. Encore une fois, aucune différence de performance pour retourner l'un contre l'autre. –
Étant donné que les performances ne sont pas un problème, je dois retourner NULL lorsque '' est trouvé pour un enregistrement. Comme je ne connais pas de logique inverse pour l'IFNULL ou le NULLIF, je pense que je vais garder tel quel. Merci à tous pour votre contribution. – dretzlaff17