搜尋

mysql數值函數

Nov 23, 2016 pm 01:02 PM
mysql

1. 算術運算子

可使用常見的算術運算子。注意就 -、 +及 *而言, 若兩個參數均為正數,則其計算結果的精確度為 BIGINT (64位元),若其中一個參數為無符號整數, 而其它參數也是整數, 則結果為無符號整數。

+

加號:

mysql> SELECT 3+5;

-> 8

-

減號

一元減號。更換參數符號。

mysql> SELECT - 2;

-> -2

注意:若 運算子同一個BIGINT同時使用,則回傳值也是一個BIGINT。這表示你應該盡量避免對可能產生–263的整數使用 –。

*

乘號:

mysql> SELECT 3*5;

-> 15

mysql> SELECT 1801439850948198415. 4518553658426726783156020576256.0

mysql> SELECT 18014398509481984*18014398509481984;-

最後一個表達式的結果是不正確的。原因是整數相乘的結果超過了BIGINT 計算的 64位元範圍。

/

除號:

mysql> SELECT 3/5;

-> 0.60

被零除的結果為 NULL:

my>

只有當執行的脈絡中,其結果要轉換為整數時,除法才會和 BIGINT 演算法一起使用。

DIV

整數除法。 類似 FLOOR(),然而使用BIGINT 演算法也是可靠的。

mysql> SELECT 5 DIV 2;

-> 2

2. 數學函數

若發生錯誤,所有數學函數都會回傳 NULL 。

ABS(X)

回傳X 的絕對值。

mysql> SELECT ABS(2);

-> 2

mysql> SELECT ABS(-32);

-> 32

此函數支援使用BIGINT值。

ACOS(X)

回傳X 反餘弦, 即, 餘弦是X的值。若X 不在-1到 1的範圍之內,則回傳 NULL 。

mysql> SELECT ACOS(1);

-> 0

mysql> SELECT ACOS(1.0001);

-> NULL

>

mysql>

ASIN(X )

回傳X 的反正弦,即,正弦為X 的值。若X  若X 不在-1到 1的範圍之內,則返回 NULL 。

mysql> SELECT ASIN(0.2);        -> 0.20135792079033
mysql> SELECT ASIN('foo');
+-------------+
| ASIN('foo') |
+-------------+
|           0 |
+-------------+
1 row in set, 1 warning (0.00 sec)

mysql> SHOW WARNINGS;
+---------+------+-----------------------------------------+
| Level   | Code | Message                                 |
+---------+------+-----------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'foo' |
+---------+------+-----------------------------------------+

ATAN(X)

ATAN(X)

回傳X 的反正切,即,正切為X 的值。

mysql> SELECT ATAN(2);

-> 1.1071487177941

mysql> SELECT ATAN(-2);

-> -1.107148787(Y3)

返回兩個變數X 及Y的反正切。 它類似 Y 或 X的反正切計算,  除非兩個參數的符號都用於決定結果所在像限。
mysql> SELECT ATAN(-2,2);

-> -0.78539816339745

mysql> SELECT ATAN2(PI(),0);

mysql> SELECT ATAN2(PI(),0);

mysql> SELECT ATAN2(PI(),0);

my>  SELECT ATAN2(PI(),0);

-613262422(PI(),0);

-613222(PI(),0);

(X)

傳回不小於X 的最小整數值。

mysql> SELECT CEILING(1.23);

-> 2

mysql> SELECT CEIL(-1.23);

-> -1

這兩個函數的意義相同。注意回傳值會被轉換為一個BIGINT。

COS(X)

返回X 的餘弦,其中X在弧度上已知。

mysql> SELECT COS(PI());

-> -1

COT(X)

回傳X 的餘切。

mysql> SELECT COT(12);

-> -1.5726734063977

mysql> SELECT COT(0);

-> Nmysql> SELECT COT(0);

-> Nmysql> SELECT COT(0);

-> Nmysql> 32比特無符號值。若參數為NULL ,則結果為 NULL。此參數應為字串,而且在不是字串的情況下會被當作字串處理(若有可能)。

mysql> SELECT CRC32('MySQL');

-> 3259397556

mysql> SELECT CRC32('mysql

mysql> SELECT CRC32('mysql);

mysql> X, 此參數由弧度被轉化為度。

mysql> SELECT DEGREES(PI());

-> 180

mysql> SELECT DEGREES(PI() / 2);

-> 90

後的值(自然對數的底)。

mysql> SELECT EXP(2);

-> 7.3890560989307

mysql> SELECT EXP(-2); ;

-> 1

FLOOR( X)

傳回不大於X的最大整數值 。

mysql> SELECT FLOOR(1.23);

-> 1

mysql> SELECT FLOOR(-1.23);

-> -2

注意,傳回值會被轉換成一個

FORMAT(X,D)

將數字X 的格式寫成'#,###,###.##'格式, 即保留小數點後 D位,而第D位的保留方式為四捨五入,然後將結果以字串的形式傳回。

LN(X)

回傳X 的自然對數,即, X 相對於基數e 的對數。

mysql> SELECT LN(2);

-> 0.69314718055995

mysql> SELECT LN(-2);

-> N”這個函數具有相同意義。

LOG(X) LOG(B,X)

若用一個參數調用,這個函數就會回傳X 的自然對數。

mysql> SELECT LOG(2);

-> 0.69314718055995

mysql> SELECT LOG(-2);

mysql> SELECT LOG(-2);

-> N多的對數。

mysql> SELECT LOG(2,65536);

-> 16

mysql> SELECT LOG(10,100);

-> 2

( LOGLOGI) B)。

LOG2(X)

回傳X 的基數為2的對數。

mysql> SELECT LOG2(65536);

-> 16

mysql> SELECT LOG2(-100);

-> NULL

(比特這個函數相當於表達式 LOG(X) / LOG(2)。

LOG10(X)

回傳X的基數為10的對數。

mysql> SELECT LOG10(2);

->0.30102999566398

my> SELECT LOG10(100);

my>

-> NULL

LOG10( X)相當於LOG(10,X)。

MOD(N,M) , N % M N MOD M

模操作。返回N 被 M除後的餘數。

mysql> SELECT MOD(234, 10);

-> 4

mysql> SELECT 253 % 7;

-> 1

mysql> SELECT MOD(29,9);

-> 2

mysql> SELECT 29 MOD 9;

-> 2

這個函數支援使用BIGINT 值。

MOD() 對於具有小數部分的數值也起作用, 它傳回除法運算後的精確餘數:

mysql> SELECT MOD(34.5,3);

-> 1.5

ϖ (pi)的值。預設的顯示小數位數是7位元,然而 MySQL內部會使用完全雙精確值。

mysql> SELECT PI();

-> 3.141593

mysql> SELECT PI()+0.0000000000000000000

X,Y) , POWER(X,Y)

回X 的Y乘方的結果值。

mysql> SELECT POW(2,2);

-> 4

mysql> SELECT POW(2,-2);

-> 0.25

RADIANS(

->)參數 X,  (注意 ϖ 弧度等於180度)。

mysql> SELECT RADIANS(90);

-> 1.5707963267949

RAND() RAND(N)

傳回一個隨機浮點值≤ 1.0)。若已指定一個整數參數 N ,則它被用作種子值,用來產生重複序列。

mysql> SELECT RAND();

-> 0.9233482386203

mysql> SELECT RAND(20);

-> 0.15882612572620567(320320323232620323262032326202020202020203點);

-> 0.15888261251047

mysql> SELECT RAND ();

-> 0.63553050033332

mysql> SELECT RAND();

-> 0.70100469486881

-> 0.70100469486881

my> 51047

若要在i ≤ R ≤ j 這個範圍得到一個隨機整數R ,需使用式 FLOOR(i + RAND() * (j – i + 1))。例如, 若要在7 到 12的範圍(包括7和12)內得到一個隨機整數, 可使用下列語句:

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

在ORDER BY語句中,不能使用一個有RAND()值的列,原因是 ORDER BY 會計算列的多重時間。然而,可依照以下的隨機順序檢索資料行:

mysql> SELECT * FROM tbl_name ORDER BY RAND();

ORDER BY RAND()同 LIMIT 的結合從一組列中選擇隨機樣本很有用:

mysql> SELECT * FROM table1, table2 WHERE a=b AND c

-> ORDER BY RAND() LIMIT 1000;

注意,在WHERE語句中,WHERE每執行一次, 再執行一次, 再執行一次一次。

RAND()的作用不是作為一個精確的隨機發生器,而是一種用來發生在同樣的 MySQL版本的平台之間的可移動ad hoc隨機數的快速方式。

ROUND(X) ROUND(X,D)

返回参数X, 其值接近于最近似的整数。在有两个参数的情况下,返回 X ,其值保留到小数点后D位,而第D位的保留方式为四舍五入。若要接保留X值小数点左边的D 位,可将 D 设为负值。

mysql> SELECT ROUND(-1.23);

-> -1

mysql> SELECT ROUND(-1.58);

-> -2

mysql> SELECT ROUND(1.58);

-> 2

mysql> SELECT ROUND(1.298, 1);

-> 1.3

mysql> SELECT ROUND(1.298, 0);

-> 1

mysql> SELECT ROUND(23.298, -1);

-> 20

返回值的类型同 第一个自变量相同(假设它是一个整数、双精度数或小数)。这意味着对于一个整数参数,结果也是一个整数(无小数部分)。

当第一个参数是十进制常数时,对于准确值参数,ROUND() 使用精密数学题库:

对于准确值数字, ROUND() 使用“四舍五入” 或“舍入成最接近的数” 的规则:对于一个分数部分为 .5或大于 .5的值,正数则上舍入到邻近的整数值, 负数则下舍入临近的整数值。(换言之, 其舍入的方向是数轴上远离零的方向)。对于一个分数部分小于.5 的值,正数则下舍入下一个整数值,负数则下舍入邻近的整数值,而正数则上舍入邻近的整数值。

对于近似值数字,其结果根据C 库而定。在很多系统中,这意味着 ROUND()的使用遵循“舍入成最接近的偶数”的规则: 一个带有任何小数部分的值会被舍入成最接近的偶数整数。

以下举例说明舍入法对于精确值和近似值的不同之处:

mysql> SELECT ROUND(2.5), ROUND(25E-1);
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
| 3          |            2 |
+------------+--------------+

SIGN(X)

返回参数作为-1、 0或1的符号,该符号取决于X 的值为负、零或正。

mysql> SELECT SIGN(-32);

-> -1

mysql> SELECT SIGN(0);

-> 0

mysql> SELECT SIGN(234);

-> 1

SIN(X)

返回X 正弦,其中 X 在弧度中被给定。

mysql> SELECT SIN(PI());

-> 1.2246063538224e-16

mysql> SELECT ROUND(SIN(PI()));

-> 0

SQRT(X)

返回非负数X 的二次方根。

mysql> SELECT SQRT(4);

-> 2

mysql> SELECT SQRT(20);

-> 4.4721359549996

mysql> SELECT SQRT(-16);

-> NULL

TAN(X)

返回X 的正切,其中X 在弧度中被给定。

mysql> SELECT TAN(PI());

-> -1.2246063538224e-16

mysql> SELECT TAN(PI()+1);

-> 1.5574077246549

TRUNCATE(X,D)

返回被舍去至小数点后D位的数字X。若D 的值为 0, 则结果不带有小数点或不带有小数部分。可以将D设为负数,若要截去(归零) X小数点左起第D位开始后面所有低位的值.  

mysql> SELECT TRUNCATE(1.223,1);

-> 1.2

mysql> SELECT TRUNCATE(1.999,1);

-> 1.9

mysql> SELECT TRUNCATE(1.999,0);

-> 1

mysql> SELECT TRUNCATE(-1.999,1);

-> -1.9

mysql> SELECT TRUNCATE(122,-2);

-> 100

mysql> SELECT TRUNCATE(10.28*100,0);

-> 1028

所有数字的舍入方向都接近于零。


陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
與其他RDBM相比,MySQL如何處理並發?與其他RDBM相比,MySQL如何處理並發?Apr 29, 2025 am 12:44 AM

MySQLhandlesconcurrencyusingamixofrow-levelandtable-levellocking,primarilythroughInnoDB'srow-levellocking.ComparedtootherRDBMS,MySQL'sapproachisefficientformanyusecasesbutmayfacechallengeswithdeadlocksandlacksadvancedfeatureslikePostgreSQL'sSerializa

MySQL與其他關係數據庫相比如何處理交易?MySQL與其他關係數據庫相比如何處理交易?Apr 29, 2025 am 12:37 AM

mySqlHandLestActionSefectefectionalytheinnodbengine,supportingAcidPropertiessimilartopostgresqlesqlandoracle.1)mySqluessRepeTableReadAbereadasTheDefaultIsolationLeleleteLevel,whatcanBeadJustEdToreDtoreDtoreDtoreadCommittedCommittenCommententCommittedForHigh-TrafficsCenarios.2)

MySQL中有哪些數據類型?MySQL中有哪些數據類型?Apr 29, 2025 am 12:28 AM

MySQL的數據類型分為數值、日期和時間、字符串、二進制和空間類型。選擇正確的類型可以優化數據庫性能和數據存儲。

在MySQL中編寫有效的SQL查詢的最佳實踐是什麼?在MySQL中編寫有效的SQL查詢的最佳實踐是什麼?Apr 29, 2025 am 12:24 AM

最佳實踐包括:1)理解數據結構和MySQL處理方式,2)適當索引,3)避免SELECT*,4)使用合適的JOIN類型,5)謹慎使用子查詢,6)使用EXPLAIN分析查詢,7)考慮查詢對服務器資源的影響,8)定期維護數據庫。這些做法能使MySQL查詢不僅快速,還具備可維護性、可擴展性和資源效率。

MySQL與PostgreSQL有何不同?MySQL與PostgreSQL有何不同?Apr 29, 2025 am 12:23 AM

MySQLisbetterforspeedandsimplicity,suitableforwebapplications;PostgreSQLexcelsincomplexdatascenarioswithrobustfeatures.MySQLisidealforquickprojectsandread-heavytasks,whilePostgreSQLispreferredforapplicationsrequiringstrictdataintegrityandadvancedSQLf

MySQL如何處理數據複製?MySQL如何處理數據複製?Apr 28, 2025 am 12:25 AM

MySQL通過異步、半同步和組複製三種模式處理數據複製。 1)異步複製性能高但可能丟失數據。 2)半同步複製提高數據安全性但增加延遲。 3)組複製支持多主複製和故障轉移,適用於高可用性需求。

您如何使用解釋性語句分析查詢性能?您如何使用解釋性語句分析查詢性能?Apr 28, 2025 am 12:24 AM

EXPLAIN語句可用於分析和提升SQL查詢性能。 1.執行EXPLAIN語句查看查詢計劃。 2.分析輸出結果,關注訪問類型、索引使用情況和JOIN順序。 3.根據分析結果,創建或調整索引,優化JOIN操作,避免全表掃描,以提升查詢效率。

您如何備份並還原MySQL數據庫?您如何備份並還原MySQL數據庫?Apr 28, 2025 am 12:23 AM

使用mysqldump進行邏輯備份和MySQLEnterpriseBackup進行熱備份是備份MySQL數據庫的有效方法。 1.使用mysqldump備份數據庫:mysqldump-uroot-pmydatabase>mydatabase_backup.sql。 2.使用MySQLEnterpriseBackup進行熱備份:mysqlbackup--user=root--password=password--backup-dir=/path/to/backupbackup。恢復時,使用相應的命

See all articles

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

mPDF

mPDF

mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

SecLists

SecLists

SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

SAP NetWeaver Server Adapter for Eclipse

SAP NetWeaver Server Adapter for Eclipse

將Eclipse與SAP NetWeaver應用伺服器整合。