【13】WEB安全學習----MYSQL-3
目錄
函式與操作符
一、型別轉換
隱式轉換:
當運算子與不同型別的運算元一起使用時,會發生型別轉換以使運算元相容。某些轉換是隱式發生的。例如,MySQL會根據需要自動將數字轉換為字串,反之亦然。
SELECT 1+'1'; //2
SELECT '2'+'1'; //3
SELECT '2a'+1; //3
SELECT '2a'+'4b'; //6
SELECT '2a'+'b'; //2
SELECT 3>'2a'; //1
SELECT 1>'2a'; //0
顯式轉換:
利用MySQL中兩個函式其中之一,可以將expr轉換到指定型別type。
CAST(expr AS type)
CONVERT(expr,type)
SELECT 38.8, CAST(38.8 AS CHAR);
- > 38.8,'38 .8'
SELECT 38.8, CONCAT(38.8);
- > 38.8,'38 .8'
二、流程控制
IF
語法格式:IF(expr1,expr2,expr3),如果expr1是TRUE (expr1 <> 0和expr1 <> NULL),則IF() 返回expr2。否則,它返回expr3。
IFNULL
語法格式:IFNULL(expr1,expr2)
三、字串函式
函式名 | 說明 | demo |
---|---|---|
ASCII(str) | 返回字串最左側字元的程式碼 | SELECT ASCII('a'); //97 |
ORD(str) | 返回字串最左側字元的程式碼 | SELECT ORD('a'); //97 |
CHAR(N) | 返回數字N對應的字元 | SELECT CHAR(97); //'a' |
BIN(N) | 返回二進位制值的字串表示形式 N | SELECT BIN(10); //'1010' |
HEX(str/N) | 返回十進位制或字串值的十六進位制表示形式 |
SELECT HEX('abc'); //616263 SELECT HEX(123); //7B |
UNHEX(str) | 返回包含數字十六進位制表示的字串 | SELECT UNHEX('123'); //☺# |
OCT(N) | 返回包含數字的八進位制表示的字串 | SELECT OCT(16); //20 |
TO_BASE64(str) | 返回轉換為base-64字串的引數(mysql5.7版本及以上才有) | SELECT TO_BASE64('abc') //'YWJj' |
FROM_BASE64(str) | 解碼base64編碼的字串並返回結果(mysql5.7版本及以上才有) | FROM_BASE64('YWJj'); //'abc' |
UPPER(str) | 轉換為大寫 | SELECT UPPER('abc'); //'ABC' |
LOWER(str) | 轉換為小寫 | SELECT LOWER('ABC'); //'ABC' |
TRIM(str) | 刪除前導和尾隨空格 | SELECT TRIM(' a b '); //'a b' |
LEFT(str,len) | 返回指定的最左邊的字元數 | SELECT LEFT('abcdefg',4); //'abcd' |
RIGHT(str,len) | 返回指定的最右邊的字元數 | SELECT RIGHT('abcdefg',4); //'defg' |
MID(str,pos,len) | 返回指定的子字串 |
SELECT MID('abcde',1,2); //'ab' SELECT MID('abcde',2); //'bcde' |
SUBSTRING(str,pos,len) | 返回指定的子字串 |
SELECT SUBSTRING('abcde',1,2); //'ab' SELECT SUBSTRING('abcde',2); //'bcde' |
SUBSTR(str,pos,len) | 返回指定的子字串 |
SELECT SUBSTR('abcde',1,2); //'ab' SELECT SUBSTR('abcde',2); //'bcde' |
REVERSE(str) | 反轉字串中的字元 | SELECT REVERSE('abcd'); //'dcba' |
CHAR_LENGTH(str) | 返回引數中的字元數 | SELECT CHAR_LENGTH('abc哈'); //4 |
LENGTH(str) | 以位元組為單位返回字串的長度 | SELECT LENGTH('abc哈'); //5 |
CONCAT(str1,str2,...) | 返回連線字串 |
SELECT CONCAT('A','B','C'); //'ABC' |
INSERT(str,pos,len,newstr) | 在指定位置插入一個子字串,直到指定的字元數 | SELECT insert('abcdefg',3,1,'11'); //'ab11defg' |
REPLACE(str,from_str,to_str) | 替換指定的字串,返回替換結果 | SELECT REPLACE('aabbcc','a','1'); //‘11bbcc’ |
RPAD(str,len,padstr) | 追加指定次數的字串 | SELECT RPAD('hi',5,'b'); //'hibbb' |
STRCMP(expr1,expr2) | 比較兩個字串 | SELECT STRCMP('text2', 'text'); //1 |
四、日期時間函式
返回當前日期-CURDATE()
返回當前時間-CURTIME()
返回當前日期和時間-NOW()
返回Unix時間戳-UNIX_TIMESTAMP()
將Unix時間戳格式化為日期-FROM_UNIXTIME()
將字串轉換為日期-STR_TO_DATE()
五、加密和壓縮功能
MD5加密
SHA1加密
SHA2加密
不同加密位數:SHA-224,SHA-256,SHA-384和SHA-512
六、其它函式功能
反覆執行表示式
語法格式:BENCHMARK(count,expr),可以用來進行盲注。
USER():檢視當前使用者列表
CURRENT_USER():檢視當前使用者
DATABASE():檢視當前資料庫
SCHEMA():檢視當前資料庫
VERSION():返回表示MySQL伺服器版本的字串