Localisation de la valeur numérique la plus proche dans une base de données
Imaginez une situation dans laquelle vous avez besoin d'une requête de base de données pour récupérer un enregistrement précis correspondant à votre entrée ou , en l'absence de correspondance exacte, l'approximation la plus proche. Par exemple, supposons que vous possédez des données avec un champ « Taille » correspondant à une valeur spécifique (par exemple, 2) et un champ « Zone » contenant des valeurs numériques variées.
Considérez la requête suivante :
SELECT * FROM [myTable] WHERE Name = 'Test' AND Size = 2 AND PType = 'p' ORDER BY Area DESC
Le résultat attendu est que la requête identifie un enregistrement qui correspond exactement à votre saisie ("Test" pour le champ "Nom", 2 pour le champ "Taille" et 'p' pour le champ 'PType'), en priorisant le champ 'Area' par ordre décroissant. Cependant, s'il n'existe aucune correspondance exacte, vous cherchez à récupérer l'enregistrement dont la valeur « Zone » est la plus proche de votre entrée.
Pour ce faire, utilisez la requête modifiée suivante :
SELECT TOP 1 * FROM [myTable] WHERE Name = 'Test' and Size = 2 and PType = 'p' ORDER BY ABS( Area - @input )
Cette requête révisée intègre la fonction ABS(), qui calcule la valeur absolue de la différence entre le champ « Zone » et votre entrée spécifiée. La clause ORDER BY organise les résultats par ordre croissant en fonction de la valeur absolue de la différence, garantissant que l'enregistrement avec la plus petite différence (donc la valeur numérique la plus proche de votre entrée) est récupéré.
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!