MySql 經常使用函數

1、字符串函數

contact(s1,s2,s3...) :  把傳入的參數鏈接成字符串
mysql> select  concat('a','b','c');
+---------------------+
| concat('a','b','c') |
+---------------------+
| abc                 |
+---------------------+html

任何字符串和 null 拼接結果都是 null 
mysql> select  concat('a','b','c',null);
+--------------------------+
| concat('a','b','c',null) |
+--------------------------+
| NULL                     |
+--------------------------+mysql

INSERT(str,pos,len,newstr) : 將字符串 str 從第 pos 位置開始,len 字符長的子串替換爲 newstr
mysql> select INSERT('abcd',1,2,'!!');
+-------------------------+
| INSERT('abcd',1,2,'!!') |
+-------------------------+
| !!cd                    |
+-------------------------+sql


LOWER(str),UPPER(str): 將字符串轉爲小寫/大寫
mysql> select LOWER('ABC'),UPPER('abc');
+--------------+--------------+
| LOWER('ABC') | UPPER('abc') |
+--------------+--------------+
| abc          | ABC          |
+--------------+--------------+數據庫


LEFT(str,len),RIGHT(str,len): 返回字符串最左邊/最右邊 len 個字符,若是 len 爲 null,結果返回 null
mysql> select LEFT('abcd',1),RIGHT('abcd',1);
+----------------+-----------------+
| LEFT('abcd',1) | RIGHT('abcd',1) |
+----------------+-----------------+
| a              | d               |
+----------------+-----------------+函數


 LTRIM(str),RTRIM(str):去除 str 左邊/右邊 空格
 mysql> select LTRIM('   abc  '),RTRIM('      abc     ');
+-------------------+-------------------------+
| LTRIM('   abc  ') | RTRIM('      abc     ') |
+-------------------+-------------------------+
| abc               |       abc               |
+-------------------+-------------------------+加密

REPEAT(str,count):返回 str 重複 count 次數結果
mysql> select REPEAT('ad',3);
+----------------+
| REPEAT('ad',3) |
+----------------+
| adadad         |
+----------------+spa

REPLACE(str,from_str,to_str):to_str 替換 str 中出現的 from_str
mysql> select REPLACE('abcd','ab','!!');
+---------------------------+
| REPLACE('abcd','ab','!!') |
+---------------------------+
| !!cd                      |
+---------------------------+orm

STRCMP(expr1,expr2):比較 expr1 和 expr2 的 ascii 值的大小,若是相等返回 0 ,若是 expr1 比 expr2 小 返回 -1,若是 expr1 比 expr2 大 返回 1
mysql> select STRCMP('a','a'),STRCMP('a','b'),STRCMP('b','a');
+-----------------+-----------------+-----------------+
| STRCMP('a','a') | STRCMP('a','b') | STRCMP('b','a') |
+-----------------+-----------------+-----------------+
|               0 |              -1 |               1 |
+-----------------+-----------------+-----------------+htm

trim(str):去除 str 左右的空格
mysql> select  trim(' aaa  ');
+----------------+
| trim(' aaa  ') |
+----------------+
| aaa            |
+----------------+ci

SUBSTRING(str,pos,len): 截取 str 中從 pos 位置起的 len 個字符
mysql> select  SUBSTRING('abcdefg',1,3);
+--------------------------+
| SUBSTRING('abcdefg',1,3) |
+--------------------------+
| abc                      |
+--------------------------+


2、數值函數

select  ABS(X): 獲取 X 的絕對值
select  CEIL(X): 獲取大於 X 的最小整數
select  FLOOR(X):獲取小於 X 的最大整數
select  MOD(N,M): 返回 n%m 結果
select  RAND():返回 0~1 之間的隨機值
select  ROUND(X,D):返回 X 的四捨五入的有 D 位小數的值,D默認爲0,若是返回結果爲整數,則D=0
mysql> select  ROUND(1.1),ROUND(1.1,1),ROUND(1.1,2),ROUND(1,2);
+------------+--------------+--------------+------------+
| ROUND(1.1) | ROUND(1.1,1) | ROUND(1.1,2) | ROUND(1,2) |
+------------+--------------+--------------+------------+
| 1          | 1.1          | 1.10         |          1 |
+------------+--------------+--------------+------------+
select  TRUNCATE(X,D):返回 X 截取 D 位小數的結果,注意和 ROUND 的函數區別
mysql> select  TRUNCATE(1.238,2),ROUND(1.238,2);
+-------------------+----------------+
| TRUNCATE(1.238,2) | ROUND(1.238,2) |
+-------------------+----------------+
| 1.23              | 1.24           |
+-------------------+----------------+


3、日期和時間函數


select  now();獲取當前時間
select DATE_FORMAT(date,format):按照 format 格式化 date ,關於 mysql 中時間的格式 ,參考 https://dev.mysql.com/doc/refman/8.0/en/date-and-time-functions.html
mysql> select  DATE_FORMAT(now(),'%Y%m%d');
+-----------------------------+
| DATE_FORMAT(now(),'%Y%m%d') |
+-----------------------------+
| 20190218                    |
+-----------------------------+

select DATE_ADD(date,INTERVAL expr unit):返回一個時間或日期加上一個時間間隔
當前日期、當前日期向後一天,當前日期向前一天
mysql> select NOW(),DATE_ADD(now(),INTERVAL 1 day),DATE_ADD(now(),INTERVAL -1 day);
+---------------------+--------------------------------+---------------------------------+
| NOW()               | DATE_ADD(now(),INTERVAL 1 day) | DATE_ADD(now(),INTERVAL -1 day) |
+---------------------+--------------------------------+---------------------------------+
| 2019-02-18 16:30:05 | 2019-02-19 16:30:05            | 2019-02-17 16:30:05             |
+---------------------+--------------------------------+---------------------------------+
返回距離當前日期一年兩個月的日期
mysql> select DATE_ADD(now(),INTERVAL '1_2' year_month);
+-------------------------------------------+
| DATE_ADD(now(),INTERVAL '1_2' year_month) |
+-------------------------------------------+
| 2020-04-18 16:31:57                       |
+-------------------------------------------+

select DATEDIFF(expr1,expr2):返回 expr1- expr2表示爲從一個日期到另外一個日期的天數值
mysql> select  now(),DATEDIFF(now(),'2019-01-01');
+---------------------+------------------------------+
| now()               | DATEDIFF(now(),'2019-01-01') |
+---------------------+------------------------------+
| 2019-02-18 16:34:40 |                           48 |
+---------------------+------------------------------+

select TIMESTAMPDIFF(unit,datetime_expr1,datetime_expr2):返回datetime_expr2- datetime_expr1,結果的單位由unit參數給出
mysql> select  TIMESTAMPDIFF(MINUTE,'2019-02-18 11:00:00','2019-02-18 12:00:00') as result;
+--------+
| result |
+--------+
|     60 |
+--------+
mysql> select  TIMESTAMPDIFF(HOUR,'2019-02-18 11:00:00','2019-02-18 12:00:00') as result;
+--------+
| result |
+--------+
|      1 |
+--------+


4、流程控制函數

IF(expr1,expr2,expr3):若是expr1是TRUE (expr1 <> 0和expr1 <> NULL),則IF() 返回expr2。不然,它返回expr3
IFNULL(expr1,expr2):若是expr1不是 NULL,則 IFNULL()返回 expr1; 不然它會返回 expr2
CASE WHEN [condition1] THEN result1 [WHEN [condition2] THEN result2 ...] [ELSE defultresult] END:若是 condition1 爲真則返回 result1,若是 condition2 爲真則返回 result2,不然返回 defultresult
mysql> SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END as colvalue;
+----------+
| colvalue |
+----------+
| true     |
+----------+

CASE value WHEN [compare_value1] THEN result1 [WHEN [compare_value2] THEN result2 ...] [ELSE result] END:若是 value=compare_value1 返回 result1,若是 value=compare_value2 返回 result2
mysql> SELECT CASE 1  WHEN 1 THEN 'one' WHEN 2 THEN 'two' ELSE 'more' END as colvalue;
+----------+
| colvalue |
+----------+
| one      |
+----------+


5、其餘函數

select VERSION():查看數據庫版本 select USER():查看當前登陸用戶 select PASSWORD(str):返回字符串 str  加密的版本,此函數只用來設置系統用戶的密碼,不能用來對應用數據加密 select MD5(str):返回 str 的 MD5 值,經常使用來對應用中的數據進行加密

相關文章
相關標籤/搜索