Zoeken…


Opmerkingen

MySQL, op de meeste machines, gebruikt 64-bit IEEE 754 rekenkunde met drijvende komma voor zijn berekeningen.

In integere contexten wordt gebruik gemaakt van integer rekenen.

  • RAND() is geen perfecte generator voor willekeurige getallen. Het wordt voornamelijk gebruikt om snel pseudo-willekeurige getallen te genereren

Rekenkundige operatoren

MySQL biedt de volgende rekenkundige operatoren

operator Naam Voorbeeld
+ toevoeging SELECT 3+5; -> 8
SELECT 3.5+2.5; -> 6,0
SELECT 3.5+2; -> 5,5
- aftrekking SELECT 3-5; -> -2
* Vermenigvuldiging SELECT 3 * 5; -> 15
/ Divisie SELECT 20 / 4; -> 5
SELECT 355 / 113; -> 3.1416
SELECT 10.0 / 0; -> NULL
DIV Integer divisie SELECT 5 DIV 2; -> 2
% of 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

Als de getallen in uw rekenkunde allemaal gehele getallen zijn, gebruikt MySQL het BIGINT (64-bits ondertekende) gehele gegevenstype om zijn werk te doen. Bijvoorbeeld:

select (1024 * 1024 * 1024 * 1024 *1024 * 1024) + 1 -> 1.152.921.504.606.846.977

en

select (1024 * 1024 * 1024 * 1024 *1024 * 1024 * 1024 -> BIGINT buiten bereik fout

DUBBELE

Als getallen in uw rekenkunde fractioneel zijn, gebruikt MySQL 64-bits IEEE 754 rekenkunde met drijvende komma . U moet voorzichtig zijn bij het gebruik van drijvende komma, omdat veel drijvende kommagetallen inherent benaderingen zijn in plaats van exacte waarden .

Wiskundige constanten

Pi

Het volgende retourneert de waarde van PI opgemaakt met 6 decimalen. De werkelijke waarde is goed om te DOUBLE ;

SELECT PI();    -> 3.141593

Trigonometrie (SIN, COS)

Hoeken zijn in radialen, geen graden. Alle berekeningen worden uitgevoerd in IEEE 754 64-bit drijvende komma . Alle berekeningen met drijvende komma zijn onderworpen aan kleine fouten, bekend als machine ε (epsilon) fouten , dus probeer ze niet te vergelijken voor gelijkheid. Er is geen manier om deze fouten te vermijden bij het gebruik van drijvende komma; ze zijn ingebouwd in de technologie.

Als u DECIMAL waarden gebruikt in goniometrische berekeningen, worden deze impliciet geconverteerd naar een zwevend punt en vervolgens terug naar een decimaal getal.

Sinus

Retourneert de sinus van een getal X, uitgedrukt in radialen

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

Cosinus

Retourneert de cosinus van X wanneer X wordt gegeven in radialen

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

Raaklijn

Retourneert de tangens van een getal X, uitgedrukt in radialen. Merk op dat het resultaat bijna nul is, maar niet precies nul. Dit is een voorbeeld van machine ε.

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

Arc Cosine (omgekeerde cosinus)

Retourneert de boogcosinus van X als X in het bereik -1 to 1

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

Arc Sine (inverse sinus)

Retourneert de boogsinus van X als X in het bereik -1 to 1

SELECT ASIN(0.2); -> 0.20135792079033

Arc Tangent (inverse tangens)

ATAN(x) geeft de boogtangens van een enkel getal terug.

SELECT ATAN(2); -> 1.1071487177941

ATAN2(X, Y) retourneert de ATAN2(X, Y) van de twee variabelen X en Y. Het is vergelijkbaar met het berekenen van de boogtangens van Y / X. Maar het is numeriek robuuster: t werkt correct als X bijna nul is, en de tekens van beide argumenten worden gebruikt om het kwadrant van het resultaat te bepalen.

Goede praktijk blijkt het schrijven formules te gebruiken ATAN2() in plaats ATAN() waar mogelijk.

 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

cotangent

Retourneert de cotangens van X

SELECT COT(12); -> -1.5726734063977

conversie

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

Afronding (ROND, VLOER, PLAFOND)

Rond een decimaal getal af op een geheel getal

Voor exacte numerieke waarden (bijv. DECIMAL ): als de eerste decimaal van een getal 5 of hoger is, rondt deze functie een getal af naar het volgende gehele getal weg van nul . Als die decimale plaats 4 of lager is, rondt deze functie af naar de volgende gehele waarde die het dichtst bij nul ligt .

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

Voor numerieke waarden (bijv. DOUBLE ): het resultaat van de functie ROUND() is afhankelijk van de C-bibliotheek; op veel systemen betekent dit dat ROUND() de ronde naar de dichtstbijzijnde even- regel gebruikt:

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

Een getal naar boven afronden

Gebruik de functie CEIL() of CEILING() om een getal af te ronden

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

Een getal naar beneden afronden

Gebruik de functie FLOOR() om een getal naar beneden af te ronden

SELECT FLOOR(1.99) -> 1

FLOOR en CEIL gaan naar / weg van -infinity:

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

Rond een decimaal getal af op een opgegeven aantal decimalen.

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

De bespreking van omhoog versus omlaag en "5" is ook van toepassing.

Verhoog een getal naar een macht (POW)

Gebruik een van de functies POW() of POWER() om een getal x te verhogen tot een macht y

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

Vierkantswortel (SQRT)

Gebruik de functie SQRT() . Als het aantal negatief is, wordt NULL geretourneerd

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

Willekeurige nummers (RAND)

Genereer een willekeurig nummer

Gebruik de functie RAND() om een pseudorandom-getal met drijvende komma tussen 0 en 1 te genereren

Stel dat u de volgende vraag hebt

SELECT i, RAND() FROM t;

Dit zal zoiets teruggeven

ik RAND()
1 ,6191438870682
2 ,93845168309142
3 ,83482678498591

Willekeurig nummer in een bereik

Om een willekeurig getal in het bereik a <= n <= b te genereren, kunt u de volgende formule gebruiken

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

Dit genereert bijvoorbeeld een willekeurig getal tussen 7 en 12

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

Een eenvoudige manier om de rijen in een tabel willekeurig terug te geven:

SELECT * FROM tbl ORDER BY RAND();

Dit zijn pseudo-willekeurige getallen.

De pseudorandom-nummergenerator in MySQL is niet cryptografisch beveiligd. Dat wil zeggen, als u MySQL gebruikt om willekeurige getallen te genereren die als geheimen worden gebruikt, zal een vastberaden tegenstander die weet dat u MySQL hebt gebruikt, gemakkelijker uw geheimen kunnen raden dan u misschien denkt.

Absolute waarde en teken (ABS, SIGN)

Retourneer de absolute waarde van een getal

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

Het sign van een nummer vergelijkt het met 0.

Teken Resultaat Voorbeeld
-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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow