Utiliser SQL pour trouver la valeur numérique la plus proche dans une base de données
Dans la gestion de bases de données, il est souvent nécessaire de récupérer des enregistrements basés sur des valeurs numériques . Lorsqu’une correspondance exacte n’est pas trouvée, il peut être crucial de trouver la valeur correspondante la plus proche. Cette question aborde un tel scénario et fournit une solution en utilisant SQL.
L'objectif est de trouver un enregistrement avec la valeur « Zone » la plus proche possible d'une valeur d'entrée donnée. L'instruction de sélection initiale fournie par l'utilisateur est incapable d'accomplir cette tâche.
La solution réside dans l'utilisation de la fonction ABS() pour calculer la différence absolue entre le champ « Zone » et la valeur d'entrée. Cela garantit que la différence est toujours positive. En triant les résultats par ordre croissant en fonction de la différence calculée, l'enregistrement présentant la plus petite différence, représentant la correspondance la plus proche, peut être récupéré.
L'instruction de sélection améliorée utilisant cette approche est :
SELECT TOP 1 * FROM [myTable] WHERE Name = 'Test' and Size = 2 and PType = 'p' ORDER BY ABS( Area - @input )
Ici, @input représente la valeur d'entrée pour laquelle la correspondance la plus proche est recherchée.
En utilisant la fonction ABS() et en triant les résultats, cette instruction SQL est effectivement identifie l'enregistrement avec la valeur « Zone » la plus proche de l'entrée donnée, même lorsqu'une correspondance exacte n'est pas présente dans la base de données.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!