Fonctions SQL - factorielle
Je suis un débutant en SQL Fonctions.
Quelle est la meilleure façon de créer une fonction pour factorielle dans SQL Server - Dire 10!
Est-il vraiment besoin d'être en SQL? Me semble qu'il y aurait une tonne d'autres de meilleures options là-bas.
Merci pour la réponse Oui il faut le SQL. Je suis en train d'apprendre les Fonctions de SQL Server Ne son pas des devoirs à faire, je suis en train de faire de l'auto pratique par la résolution d'un exemple de fonctions de papier que j'ai trouvé en ligne
Merci pour la réponse Oui il faut le SQL. Je suis en train d'apprendre les Fonctions de SQL Server Ne son pas des devoirs à faire, je suis en train de faire de l'auto pratique par la résolution d'un exemple de fonctions de papier que j'ai trouvé en ligne
OriginalL'auteur Jason | 2010-08-17
Vous devez vous connecter pour publier un commentaire.
Voici une solution récursive:
BIGINT
ici serait une améliorationOriginalL'auteur Abe Miessler
Non récursive façon
Et de façon récursive
OriginalL'auteur Martin Smith
-- Méthode itérative.
-- Pourquoi Itératif? Il est plus simple et plus rapide.
-- Pour @N de 0 à 20 ce qui donne un résultat exact.
-- 21 donnera un dépassement de capacité.
-- Modifier le type de données float et vous pouvez obtenir la factorielle jusqu'à 170.
-- 171 provoque un dépassement de capacité.
-- Remarque le résultat ne sera précis sur un nombre limité de postes.
-- Ben
OriginalL'auteur Ben
... pour mon Set-méthode basée sur:
OriginalL'auteur Alan Burstein
Essayer cette
OriginalL'auteur Nargis Shaikh
Je sais que je suis un peu en retard ici, mais il est intéressant de noter que la façon récursive que Martin a posté ne fonctionne pas pour 0.
Ce sera (pardonnez-moi, j'ai eu des problèmes de poster le code):
Et pour la façon, de manière plus rapide version:
C'est beaucoup plus rapide parce que je perds le MAX (), fonction qui, tout comme top 1, les causes DISTINCTES de tri.
OriginalL'auteur Alan Burstein
Voici une autre méthode pour calculer la factorielle de la valeur d'un entier dans SQL Server
Vous devez utiliser un SQL table de nombres pour cette solution.
L'instruction Select mises à jour de la déclaration de variable de type entier pour chaque ligne de la DE la partie avec en multipliant le résultat obtenu avec la commande valeurs entières
OriginalL'auteur Eralper
Si vous êtes d'accord avec une approximation, l'utilisation Stirling Rapprochement.
Noter que vous aurez à faire un cas pour 0!, en cas de besoin.
OriginalL'auteur John Wright
Vous demandé qui est le meilleur façon à créer une fonction pour factorielle dans SQL Server. Comme toujours, cela dépend du contexte. Mais si vous avez vraiment dire ça dans le sens générique, où des questions de rendement, la meilleure façon de le faire est sans doute à mettre en œuvre comme un CLR définis par l'utilisateur fonction.
https://docs.microsoft.com/en-us/sql/relational-databases/clr-integration-database-objects-user-defined-functions/clr-user-defined-functions?view=sql-server-2017
Vous pouvez bien sûr mettre en œuvre la fonction elle-même dans la langue que vous avez envie. Et une longue/bigint n'a pas vraiment le couper pour une fonction factorielle (un bigint ne peut contenir jusqu'à 20!, 21! est de dépassement de capacité arithmétique).
OriginalL'auteur Dojo