fusionner alternative dans l'Accès SQL
En T-SQL, vous pouvez le faire:
SELECT ProductId, COALESCE(Price, 0)
FROM Products
Comment voulez-vous faire la même chose dans l'Accès SQL? Je vois des exemples pour le faire avec Nz en VBA, mais je suis à la recherche pour le SQL équivalent.
Grâce.
Vous devez vous connecter pour publier un commentaire.
D'accès prend en charge la fonction Nz et vous permet de l'utiliser dans une requête. Notez bien que la nouvelle-zélande est le même que le T-SQL à l'aide de la fonction ISNULL. Il ne peut pas prendre un nombre arbitraire de paramètres comme les FUSIONNER pouvez.
SELECT NZ(SUM(price * quantity), 0) FROM outputs;
. Si je supprime leNZ
appel, il fonctionne très bien. Je n'ai pas de MS Access, juste le pilote.Si c'est dans une requête Access, vous pouvez essayer ceci:
IIf(IsNull(Price), 0, Price)
?IsNull()
est VBA et ralentit pense beaucoup, alors queIs Null
est nativement géré par Jet & co, Voir le lien Allen Browne page dans ma réponse.Ressemble, je peux utiliser:
Semble fonctionner très bien.
À l'aide de
Iif(Price is null, 0, Price)
devrait vous donner la meilleure performance (voir Allen Browne conseils de performances). Toutefois, SQL ServerCoalesce()
a le grand avantage par rapport àIif()
etNz()
qu'il peut manipuler plusieurs paramètres en cascade. J'ai donc créé ce rapide VBA équivalent:À l'aide de
IsNull()
,Nz()
, et la conversion de données et de fonctions sont intégrés dans les fonctions VBA et ne fera que ralentir vos requêtes dans les versions antérieures à 2003. Aussi loin que datatyping va utiliserCCur()
pour garantir votre type de données, mais seulement si vous avez besoin de faire des comparaisons ou tout simplement de définir le format de la propriété à la Devise sur la colonne. C'est le CAS de la déclaration qui ralentit les choses les plus, car il ajoute encore une autre fonction de votre routineà l'aide de cette solution:
Nz([Price], CCur(0))
la seule fois
CCur()
va s'exécuter lorsque le Prix Est Nul, de sorte que globalement c'est probablement le plus rapide.Le point est que le moins du nombre total de fonctions utilisées, plus vite vos requêtes à exécuter.
FUSIONNENT ou NULLIF fonction de la norme utilisée sur sql server pour une bonne migration de l'accès. ISNULLor IIF ou CHOISISSEZ sont pas standards de la fonction.