Den nächstgelegenen numerischen Wert in einer Datenbank finden
Stellen Sie sich eine Situation vor, in der Sie eine Datenbankabfrage benötigen, um einen genauen Datensatz abzurufen, der Ihrer Eingabe entspricht oder , sofern keine exakte Übereinstimmung vorliegt, die größte Annäherung. Angenommen, Sie verfügen über Daten mit einem Feld „Größe“, das einem bestimmten Wert (z. B. 2) entspricht, und einem Feld „Fläche“, das verschiedene numerische Werte enthält.
Betrachten Sie die folgende Abfrage:
SELECT * FROM [myTable] WHERE Name = 'Test' AND Size = 2 AND PType = 'p' ORDER BY Area DESC
Das beabsichtigte Ergebnis besteht darin, dass die Abfrage einen Datensatz identifiziert, der genau Ihrer Eingabe entspricht („Test“ für das Feld „Name“, 2 für das Feld „Größe“ und „p“ für 'PType'-Feld), wobei das Feld 'Area' in absteigender Reihenfolge priorisiert wird. Wenn jedoch keine genaue Übereinstimmung besteht, versuchen Sie, den Datensatz abzurufen, dessen Flächenwert Ihrer Eingabe am nächsten kommt.
Um dies zu erreichen, verwenden Sie die folgende modifizierte Abfrage:
SELECT TOP 1 * FROM [myTable] WHERE Name = 'Test' and Size = 2 and PType = 'p' ORDER BY ABS( Area - @input )
Diese überarbeitete Abfrage enthält die Funktion ABS(), die den absoluten Wert der Differenz zwischen dem Feld „Fläche“ und Ihrer angegebenen Eingabe berechnet. Die ORDER BY-Klausel ordnet die Ergebnisse in aufsteigender Reihenfolge basierend auf dem absoluten Wert der Differenz an und stellt so sicher, dass der Datensatz mit der kleinsten Differenz (und damit dem numerischen Wert, der Ihrer Eingabe am nächsten kommt) abgerufen wird.
Das obige ist der detaillierte Inhalt vonWie finde ich den nächsten numerischen Wert in einer Datenbankabfrage?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!