1. 程式人生 > >MYSQL常見運算子和函式(四)

MYSQL常見運算子和函式(四)

字元函式
(1)CONCAT():字元連線
SELECT CONCAT(‘IMOOC’,’-‘,’MySQL’);//IMOOC-MySQL
SELECT CONCAT (first_name,last_name) AS fullname FROM test;
(2)CONCAT_WS():使用指定的分隔符進行字元連線,(第一個位置指定分隔符,後面的為分割的內容)
SELECT CONCAT_WS(‘%’,’abc’,’def’); //第一個是指定的分隔符;//abc%def
(3)FORMAT():數字格式化
SELECT FORMAT(123560.75,2); //123,560.75;第二個引數若為0(四捨五入),顯示整數
(4)LOWER():轉化小寫
(5)UPPER():轉換大寫
SELECT UPPER(‘mysql’);//MYSQL
(6)LEFT():獲取左側字元
(7)RIGHT():獲取右側字元
SELECT LEFT (‘MYSQL’,2); //MY
SELECT LOWER(LEFT(‘mYsql’,2)); //函式巢狀;//my
(8)LENGTH():取得字串長度
LENGTH(‘MYSQL ’);//6;最後加了個空格
(9)LTRIM():清空字串前面(左端)空格
(10)RTRIM():清空字串末尾(右端)空格
(11)TRIM():刪除前導、後續空格或者指定字元
SELECT TRIM(’ MySQL ‘);
SELECT TRIM(LEADING ‘?’ FROM ‘??MYSQL???’); //刪除前導?
SELECT TRIM(TRAILING ‘?’ FROM ‘??MYSQL???’); //刪除後續?
SELECT TRIM(BOTH ‘?’ FROM ‘??MYSQL???’); //前後均刪除,但不能刪除中間的?
(12)REPLACE():替換
SELECT REPLACE(‘MY???SQL’,’?’,”); //將問號換成空白,即去掉?
SELECT REPLACE(‘MY???SQL’,’?’,’~~’); //可以將n個?換成m個組合符號
(13)SUBSTRING():字串擷取(從1開始,程式設計裡可能從0開始)
SELECT SUBSTRING(‘mYSQL’,1,2); //從字串中的第一個位置開始擷取2個字元mY
SELECT SUBSTRING(‘mYSQL’,3); //SQL 從第3的位置開始擷取到結束
SELECT SUBSTRING(‘mYSQL’,-2); //QL 從倒數第2位開始擷取到結束
SELECT SUBSTRING(‘mYSQL’,-3,-1); //F,長度不能是負的,但是有些程式語言支援,而mysql不支援
(14)[NOT] LIKE:模式匹配(百分號%代表任意個字元; 下劃線_代表任意一個字元)
例子:”tom%”
SELECT * FROM test WHERE first_name LIKE ‘%1%%’ ESCAPE ‘1’; // 去除’1’後面的編譯,查詢包含’%’符號的資訊 ‘_’任意一個字元

數值運算子函式
SELECT CEIL(3.01) ==>4 /*有n.xx 都是n+1 進一取整 向上取整
SELECT FLOOR(3.99) ==>3 /*取n.xx 都是n 舍一取整 向下取整
SELECT 3 DIV 4 ==> 0 /*整數除法,取商
SELECT 3/4 ==>0.75 /*除法
SELECT 2.1 MOD 2 ==>0.1 /*取餘數(取模) 被除數是整數,小數都可以
SELECT 21 % 2 ==>1 /*取餘數 mod=%
SELECT POWER(3,4) ==>81 /*3的4次方 冪運算
SELECT ROUND(3.1415926,4) ==>3.1416 /*四捨五入,保留4位小數
SELECT TRUNCATE(123.89,1) ==>123.8 /*擷取小數點後的位數
SELECT TRUNCATE(123.89,0) ==>123 /*擷取小數點後的位置,0位為整數部分
SELECT TRUNCATE(123.89,-1) ==>120 /*擷取-1,從個位起去掉後面的數值替換為0

比較運算子和函式
[NOT]BETWEEN…AND…[不]在範圍之內,結果返回1或0。
例如:15 BETWEEN 10 AND 16; //1。
[NOT]IN()列出值選項。
例如:SELECT 10 IN(5,10,25); //1。
IS [NOT] NULL:只有NULL IS [NOT] NULL返回1,其他情況(包括”,0)都返回0。

日期時間函式
(1)SELECT NOW(); // 當前日期時間。
(2)SELECT CURDATE(); // 當前日期。
(3)SELECT CURTIME(); // 當前時間。
(4)SELECT DATE_ADD(‘2014-3-12’,INTERVAL [-]365 DAY); // 2015-03-12,DAY還可以替換為WEEK,MONTH,YEAR等。DATE_ADD不是增加的意思,是變化,既可以增加,也可以減去。
(5)DATEDIFF(); // 日期的差值。
DATEDIFF(‘2013-3-12’,’2014-3-12’); // -365 日期差值。
(6)DATE_FORMAT(); // 日期格式化。
SELECT DATE_FORMAT(‘2014-3-2’,’%m%d%Y’); // 03/02/2014(’%’帶有前導0作用)。

資訊函式
SELECT CONNECTION_ID(); ==>2 /*連線ID
SELECT DATABASE(); /*當前開啟的資料庫
SELECT LAST_INSERT_ID(); /*最後插入的記錄 同時寫入多條記錄是隻返回寫入的第一條的id。而且表中必須要有自動編號的欄位。
DESC tab_name; /*檢視資料庫欄位及屬性,查看錶結構
SELECT USER(); /* 列印當前使用者資訊
SELECT VERSION(); /*列印當前資料庫資訊

聚合函式
只有一個返回值
AVG() - 平均值
SELECT ROUND(AVG(goods_price),2) AS avg_price FROM tdb_goods;
COUNT() - 計數
SELECT COUNT(goods_id) as counts FROM tdb_goods;
MAX() - 最大值
SELECT MAX(goods_price) as counts FROM tdb_goods;
MIN() - 最小值
SUM() - 求和
SELECT SUM(goods_price) as counts FROM tdb_goods;

加密函式
MD5():資訊摘要演算法
select md5(’admin’);//給admin加密。如果mysql中的資訊是為了web開發做準備,那麼儘量使用md5
password():密碼演算法
set password=password(‘1236’)修改了當前登入密碼為1236