1. 程式人生 > >【13】WEB安全學習----MYSQL-3

【13】WEB安全學習----MYSQL-3

目錄

隱式轉換:

顯式轉換:

IF

函式與操作符

一、型別轉換

隱式轉換:

當運算子與不同型別的運算元一起使用時,會發生型別轉換以使運算元相容。某些轉換是隱式發生的。例如,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)

,如果expr1不是 NULL,則 IFNULL()返回 expr1; 否則它會返回 expr2。

三、字串函式

MySQL字串函式
函式名 說明 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伺服器版本的字串