17
PHP 與 MySql 與與與與與與 PHP PHP MySQL MySQL 與與與與與與 與與與與與與 與 26 與 與與與與與與與與 與與與與 與 與與與與 與

PHP 與 MySQL 入門學習指南

Embed Size (px)

DESCRIPTION

PHP 與 MySQL 入門學習指南. 第 26 章 運算式與相關函式. 凱文瑞克 著. 算術運算 ( 一 ). 算術運算 ( 二 ). 比較運算子. 範例. 首先建立一個資料表,名稱為 customers ,內容如下所示: create table customers (customer_name varchar(10),id int,address varchar(10),phone_no varchar(10)); insert into customers values(' 郭俊及 ',1,' 高雄市 ',23423455); - PowerPoint PPT Presentation

Citation preview

Page 1: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

PHPPHP 與與 MySQLMySQL 入門學習指南入門學習指南

第 26 章 運算式與相關函式

凱文瑞克 著凱文瑞克 著

Page 2: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

算術運算 ( 一 ) 運算或函式 意義與說明

+-*/ 加法 (+) 減法 (-) 乘法 (*) 除法 (/) 。

ABS(X) 求 X 的絕對值。

SIGN(X) 當 X 為正數時傳回 1 , X 為 0 時傳回 0 ,當 X 為負數時傳回 -1 。

MOD(N,M) 求 N/M 後的餘數。

FLOOR(X) 求不大於 X 的最大整數。

CEILING(X) 求不小於 X 的最小整數。

ROUND(X) 求 X 四捨五入到個位的值。

ROUND(X,D) 求 X 四捨五入到小數第 D 位的值。

EXP(X) 求對數 e 的 X 次方。

LOG(X) 求 ln X 的值。

LOG10(X) 求以十為底的 log X 值。

Page 3: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

算術運算 ( 二 )POW(X,Y) OR POWER(X,Y)

求 X 的 Y 次方。

SQRT(X) 求 X 的平方。

PI( ) 求圓周率。

SIN(X),COS(X),TAN(X) 求 X 的三角函數。

ASIN(X),ACOS(X),ATAN(X)

求 X 的反三角函數。

ATAN2(X,Y) 求 Y/X 的 ARCTAN 函數值。

COT(X) 求 COT X 。

RAND(N) 產生一個介於 0 至 1.0 之間的浮點亂數。

LEAST(N1,N2,N3.....) 在兩個以上的參數間進行比較,將其中最小的值傳回。

GREATEST(N1,N2,N3.....) 在兩個以上的參數間進行比較,將其中最大的值傳回。

DEGREES(X) 將徑度轉成角度。

RADIANS(X) 將角度轉成徑度。

TRUNCATE(X,D) 將 X 的小數以下的第 D 位以後無條件捨去。

Page 4: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

比較運算子 運算或函式 意義與說明

= 相等,注意它與 PHP 或某些語言不一樣,只有一個等號。

!=  OR <> 不等於。

< 小於。

> 大於。

>= 大於或等於。

<= 小於或等於。

<=> 與 = 很相似,只是可以做 NULL 值的比較運算。

IS NULL檢查欄位的值是否為 NULL 。 NULL 值不是 "0" ,也不是空白字元 '  ' ,也不是長度為零的字串 '' ,當一個欄位處於沒有儲存著任何值的狀態時,就稱為儲存著 NULL 值。

IS NOT NULL 檢查欄位的值是否不為 NULL 。

BETWEEN A AND B 指定一個介於 A 與 B 之間的範圍。

IN (Value1,Value2....) 檢查是否符合列舉項目的範圍。

NOT IN (Value1,Value2......) 檢查是否不在列舉項目的範圍。

IS NULL(exp) 檢查 exp 的運算式中是不是 NULL 值。

COLESCE(LIST) 在 LIST 的所有項目中,找出第一個不是 NULL 值的資料。

INTERVAL(N,N1,N2,........)當 N<N1 ,傳回 1 ,否則傳回 0 ,當 N<N2 ,再將傳回值加上 1 , 否則傳回 0 ,依此類推。

Page 5: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

範例 首先建立一個資料表,名稱為 customers ,內容如下所示:create table customers (customer_name varchar(10),id int,address varchar(10),phone_no varchar(10));insert into customers values(' 郭俊及 ',1,' 高雄市 ',23423455);insert into customers values (' 莊啟明 ',4,' 台北市 ',46645625);insert into customers values (' 周立華 ',3,' 台北縣 ',24552355);insert into customers values (' 陳例夫 ',2,' 高雄市 ',36234523);insert into customers values (' 鍾馗文 ',5,' 台北縣 ',23534511);insert into customers values (' 鄭誠新 ',6,' 台北市 ',65757567);insert into customers values (' 吳文華 ',8,' 台北縣 ',97858676);insert into customers values (' 王一銘 ',7,' 台北市 ',89563677);insert into customers values (' 趙紫新 ',9,' 高雄市 ',95795643);

Page 6: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

以比較運算子查詢 ( 一 )

Page 7: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

以比較運算子查詢 ( 二 )

Page 8: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

邏輯運算 ( 一 ) AND 運算子 (&&)

當我們想要取出工作時段為日班,且工作年資在五年以下的員工資料時,我們便可以使用下列的敘述:

SELECT * FROM SALARY WHERE WORKTIME='DAY' AND EXP<=5;

Page 9: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

邏輯運算 ( 二 )有一家餐廳每年都會發給年終獎金,每個員工可以領多少年終獎金,是以他的基本月薪和工作年資來決定。今年老闆決定發出的獎金是每人基本月薪的三倍,同時每一年的年資再加發 1000 元,現在如果我們要看看日班中是否有人可以領到 10萬元,他的查詢於法如下:

SELECT * FROM SALARY WHERE WORKTIME='DAY' AND ((BASE_SALARY*3)+(EXP*2)) >=100000;

Page 10: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

邏輯運算 ( 三 )OR 運算子 (||)

當我們想要取出工作時段為日班,或工作年資在五年以下的員工資料時,我們便可以使用下列的敘述:

SELECT * FROM SALARY WHERE WORKTIME='DAY' AND EXP<=5;

Page 11: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

邏輯運算 ( 四 )NOT 運算子 (!)

SELECT * FROM SALARY WHERE NOT WORKTIME='NIGHT';

SELECT * FROM SALARY WHERE JOB IS NOT NULL;

Page 12: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

邏輯運算 ( 五 )LIKE 運算子

利用 = 運算子,我們可以取出某一段與特定字串完全相同的資料,但是有的時候我們並不需要和這特定字串完全相同,只要它的其中某一部分和這個特定字串相便可以,碰到這種情況,就可以使用 LIKE 運算, LIKE 可以和萬用字元組合在一起使用。

Page 13: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

邏輯運算 ( 六 )% 萬用字元

欄位名稱 LIKE %<值 > 或 欄位名稱 LIKE * <值 >

Page 14: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

邏輯運算 ( 七 )_ 或 ? 萬用字元

% 是以一種可以替代任何字元的萬用字元,但是除此之外還有一種萬用字元 '_' 或 '?' ,可以用來替代一個字元,它的用法如下:

欄位名稱 LIKE _<值 > 或 欄位名稱 LIKE ?<值 >

Page 15: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

字串函式 ( 一 ) 字串運算或函式 意義與說明

ASCII(X) 傳回 X 字串中最左邊字元的 ASCII 值。

CONV(N,FROM BASE,TO_BASE)

將 N 的基底 FROM BASE 轉成 TO_BASE , N 可以是字串或數字

BIN(N) 將十進制的數值 N 轉換為二進制。

OCT(N) 將十進制的數值 N 轉換為八進制。

HEX(N) 將十進制的數值 N 轉換為十六進制。

CHAR(N,....) 將 ASCII 字元 N 轉換為對應的字元。

CONCAT(S1,S2,.....)將字串 S1,S2,... 全部連接成一個字串,即使 S1,S2... 中有數字,也會轉成文字。

LENGTH(STRING) 傳回 STRING 此字串的長度。

LOCATE(S1,S2) 傳回 S1 字串在 S2 字串第一次出現的位置是第幾個字。

INSTR(S2,S1) 與 LOACTE 相同,傳回 S1 字串在 S2 字串第一次出現的位置是第幾個字。

LPAD(STRING,LEN,PADSTR) 將 PADSTR 從左邊填入,再加上 STRING 字串,最後取總長度為 LEN 。

RPAD(STRING,LEN,PADSTR) 將 PADSTR 從右邊填入,再加上 STRING 字串,最後取總長度為 LEN 。

LEFT(STR,LEN) 從字串 STR 的左邊取 LEN 長度的字串傳回。

Page 16: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

字串函式 ( 二 )RIGHT(STR,LEN) 從字串 STR 的右邊取 LEN 長度的字串傳回。

SUBSTRING(STR,POS,LEN)

從字串 STR 的第 POS 位置開始,取出 LEN 長度的字串傳回。

SUBSTRING_INDEX(STR,DELIM,COUNT)

將字串 STR 用 DELIM 切成數個字串,然後取出 COUNT 長度的字串傳回,當 COUNT  為正數時,從字串開頭開始,當 COUNT  為負數時,從字串結尾開始。

LTRIM(STRING) 移除字串 STRING 開頭的空白。

RTRIM(STRING) 移除字串 STRING 結尾的空白。

TRIM([[BOTH|LEADING| TRAILING][REMSTR] FROM ] STR)

移除 STR 字串中與 REMSTR 相同的字串, BOTH 是開始與結尾都移除, LEADING 是移除開始, TRAILING 是移除結尾,預設是 BOTH 。

SPACE(N) 產生 N 個空白字元。

REPLACE(STRING,FROM_STR,TO_STR)

將 STRING 字串中,有 FROM_STR 出現的地方用 TO_STR 來取代。

REPEAT (STR,COUNT) 產生 COUNT 個 STR 字串。

REVERSE(STR) 將字串反順序輸出。

Page 17: PHP 與 MySQL 入門學習指南

PHP 與 MySql 入門學習指南

字串函式 ( 三 )

INSERT(STR,POS,LEN,NEWSTR)

將 STR 字串的第 POS 個字元之後,插入一個長度為 LEN 的 NEWSTR 字串。

ELT(N,S1,S2,......) 依據 N 選擇 S1,S2 之中的第 N 個字串傳回。

FIELD (STRING,S1,S2,......)

將 STRING  與後面的字串進行比對,發現相同則傳回他是第幾個,否則傳 0 。

FIND_IN_SET(STRING,STRLIST)

STRLIST 是字串集合,元素間用 , 逗號做為分隔。找出 STRING 是 STRLIST 的第幾個元素。

LCASE(STR) OR LOWER(STR)

將 STR 中的字串轉成小寫。

UCASE(STR) OR UPPER(STR)

將 STR 中的字串轉成大寫。