Suche…


Bemerkungen

MySQL verwendet auf den meisten Maschinen eine 64-Bit-Gleitkomma-Arithmetik nach IEEE 754 für seine Berechnungen.

In ganzzahligen Kontexten wird die Ganzzahlarithmetik verwendet.

  • RAND() ist kein perfekter Zufallszahlengenerator. Es wird hauptsächlich zur schnellen Erzeugung von Pseudozufallszahlen verwendet

Rechenzeichen

MySQL stellt die folgenden Rechenoperatoren zur Verfügung

Operator Name Beispiel
+ Zusatz SELECT 3+5; -> 8
SELECT 3.5+2.5; -> 6,0
SELECT 3.5+2; -> 5,5
- Subtraktion SELECT 3-5; -> -2
* Multiplikation SELECT 3 * 5; -> 15
/ Einteilung SELECT 20 / 4; -> 5
SELECT 355 / 113; -> 3.1416
SELECT 10.0 / 0; -> NULL
DIV Integer Division SELECT 5 DIV 2; -> 2
% oder MOD Modulo SELECT 7 % 3; -> 1
SELECT 15 MOD 4 -> 3
SELECT 15 MOD -4 -> 3
SELECT -15 MOD 4 -> -3
SELECT -15 MOD -4 -> -3
SELECT 3 MOD 2.5 -> 0.5

BIGINT

Wenn die Zahlen in Ihrer Arithmetik alle Ganzzahlen sind, verwendet MySQL den BIGINT (64-Bit-Vorzeichen) für seine Arbeit. Zum Beispiel:

select (1024 * 1024 * 1024 * 1024 *1024 * 1024) + 1 -> 1,152,921,504,606,846,977

und

select (1024 * 1024 * 1024 * 1024 *1024 * 1024 * 1024 -> BIGINT außerhalb des BIGINT Bereichs)

DOPPELT

Wenn die Zahlen in Ihrer Arithmetik gebrochen sind, verwendet MySQL die 64-Bit-Gleitkomma-Arithmetik nach IEEE 754 . Bei der Verwendung der Fließkomma-Arithmetik müssen Sie vorsichtig sein, da viele Fließkommazahlen von Natur aus eher Näherungswerte als genaue Werte sind .

Mathematische Konstanten

Pi

Im Folgenden wird der Wert von PI mit 6 Dezimalstellen zurückgegeben. Der tatsächliche Wert ist gut zu DOUBLE ;

SELECT PI();    -> 3.141593

Trigonometrie (SIN, COS)

Winkel sind in Radiant, nicht in Grad. Alle Berechnungen werden in einem 64-Bit-Fließkomma nach IEEE 754 durchgeführt . Alle Gleitkommaberechnungen unterliegen kleinen Fehlern, die als Maschinenfehler (Epsilon) bezeichnet werden . Versuchen Sie daher nicht, sie auf Gleichheit zu vergleichen. Es gibt keine Möglichkeit, diese Fehler bei der Verwendung von Gleitkommazahlen zu vermeiden. Sie sind in die Technologie eingebaut.

Wenn Sie in trigonometrischen Berechnungen DECIMAL Werte verwenden, werden diese implizit in Fließkommazahlen und dann wieder in Dezimalzahlen konvertiert.

Sinus

Gibt den Sinus einer Zahl X in Radiant zurück

SELECT SIN(PI()); -> 1.2246063538224e-16

Kosinus

Gibt den Cosinus von X zurück, wenn X im Bogenmaß angegeben wird

SELECT COS(PI()); -> -1

Tangente

Gibt den Tangens einer Zahl X in Bogenmaß zurück. Beachten Sie, dass das Ergebnis sehr nahe bei Null liegt, aber nicht genau Null. Dies ist ein Beispiel für eine Maschine ε.

SELECT TAN(PI());   -> -1.2246063538224e-16

Arc Cosine (inverser Cosinus)

Gibt den Arcuskosinus von X zurück, wenn X im Bereich von -1 to 1

SELECT ACOS(1);    -> 0
SELECT ACOS(1.01); -> NULL

Arc Sinus (inverser Sinus)

Gibt den Arcussinus von X zurück, wenn X im Bereich von -1 to 1

SELECT ASIN(0.2); -> 0.20135792079033

Bogentangens (inverser Tangens)

ATAN(x) gibt den Arkustangens einer einzelnen Zahl zurück.

SELECT ATAN(2); -> 1.1071487177941

ATAN2(X, Y) gibt den Arcustangens der beiden Variablen X und Y zurück. Sie ähnelt der Berechnung des Arcustangens von Y / X. Sie ist jedoch numerisch robuster: t funktioniert korrekt, wenn X nahe null ist und die Vorzeichen Beide Argumente werden verwendet, um den Quadranten des Ergebnisses zu bestimmen.

Es ATAN() , Formeln so zu schreiben, dass ATAN2() anstelle von ATAN() wo immer dies möglich ist.

 ATAN2(1,1);    -> 0.7853981633974483 (45 degrees)
 ATAN2(1,-1);   -> 2.356194490192345  (135 degrees)
 ATAN2(0, -1);  -> PI  (180 degrees)  don't try ATAN(-1 / 0)... it won't work

Kotangens

Gibt den Kotangens von X zurück

SELECT COT(12); -> -1.5726734063977

Umwandlung

SELECT RADIANS(90) -> 1.5707963267948966
SELECT SIN(RADIANS(90)) -> 1
SELECT DEGREES(1), DEGREES(PI()) -> 57.29577951308232, 180

Rundung (RUNDE, FLOOR, CEIL)

Runden Sie eine Dezimalzahl auf einen ganzzahligen Wert

Für genaue numerische Werte (z. B. DECIMAL ): Wenn die erste Dezimalstelle einer Zahl 5 oder höher ist, rundet diese Funktion eine Zahl auf die nächste Ganzzahl von Null . Wenn diese Dezimalstelle 4 oder niedriger ist, wird diese Funktion auf den nächsten ganzzahligen Wert gerundet, der dem Wert Null am nächsten liegt.

SELECT ROUND(4.51) -> 5
SELECT ROUND(4.49) -> 4
SELECT ROUND(-4.51) -> -5

Für ungefähre numerische Werte (z. B. DOUBLE ): Das Ergebnis der Funktion ROUND() hängt von der C-Bibliothek ab. Bei vielen Systemen bedeutet dies, dass ROUND() die Runde zur nächsten geraden Regel verwendet:

SELECT ROUND(45e-1) -> 4  -- The nearest even value is 4
SELECT ROUND(55e-1) -> 6  -- The nearest even value is 6

Runden Sie eine Zahl auf

Zum CEIL() einer Nummer verwenden Sie entweder die Funktion CEIL() oder CEILING()

SELECT CEIL(1.23)    -> 2
SELECT CEILING(4.83) -> 5

Eine Zahl abrunden

Um eine Zahl FLOOR() , verwenden Sie die Funktion FLOOR()

SELECT FLOOR(1.99) -> 1

FLOOR und CEIL gehen in Richtung auf / von der Unendlichkeit weg:

SELECT FLOOR(-1.01), CEIL(-1.01) -> -2 and -1
SELECT FLOOR(-1.99), CEIL(-1.99) -> -2 and -1

Runden Sie eine Dezimalzahl auf eine bestimmte Anzahl von Dezimalstellen.

SELECT ROUND(1234.987, 2) -> 1234.99
SELECT ROUND(1234.987, -2) -> 1200

Die Diskussion von Auf und Ab und "5" gilt ebenfalls.

Erhöhe eine Zahl auf eine Potenz (POW)

Um eine Zahl x auf eine Potenz y zu erhöhen, verwenden Sie entweder die Funktionen POW() oder POWER()

SELECT POW(2,2); => 4
SELECT POW(4,2); => 16

Quadratwurzel (SQRT)

Verwenden Sie die SQRT() Funktion. Wenn die Zahl negativ ist, wird NULL zurückgegeben

SELECT SQRT(16); -> 4
SELECT SQRT(-3); -> NULL

Zufallszahlen (RAND)

Erzeugen Sie eine Zufallszahl

Verwenden Sie die Funktion RAND() um eine pseudozufällige Gleitkommazahl zwischen 0 und 1 zu generieren

Angenommen, Sie haben die folgende Abfrage

SELECT i, RAND() FROM t;

Dies wird so etwas zurückgeben

ich RAND ()
1 0,6191438870682
2 0,93845168309142
3 0,83482678498591

Zufallszahl in einem Bereich

Um eine Zufallszahl im Bereich a <= n <= b zu generieren, können Sie die folgende Formel verwenden

FLOOR(a + RAND() * (b - a + 1))

Beispielsweise wird eine Zufallszahl zwischen 7 und 12 generiert

SELECT FLOOR(7 + (RAND() * 6));

Eine einfache Möglichkeit, die Zeilen in einer Tabelle zufällig zurückzugeben:

SELECT * FROM tbl ORDER BY RAND();

Dies sind Pseudozufallszahlen .

Der Pseudozufallszahlengenerator in MySQL ist nicht kryptographisch sicher. Wenn Sie also MySQL verwenden, um Zufallszahlen zu generieren, die als Geheimnisse verwendet werden sollen, kann ein entschlossener Gegner, der weiß, dass Sie MySQL verwendet haben, Ihre Geheimnisse leichter erraten, als Sie vielleicht glauben.

Absolutwert und Vorzeichen (ABS, SIGN)

Liefert den absoluten Wert einer Zahl

SELECT ABS(2);   -> 2
SELECT ABS(-46); -> 46

Das sign einer Zahl vergleicht sie mit 0.

Zeichen Ergebnis Beispiel
-1 n <0 SELECT SIGN(42); -> 1
0 n = 0 SELECT SIGN(0); -> 0
1 n> 0 SELECT SIGN(-3); -> -1
SELECT SIGN(-423421); -> -1


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow