MYSQL 常用函數

2021-03-02 海鯊資料庫架構師

字符串函數

函數

功能

CONCAT(str1, str2,…,strn)

連接字符串str1,…,strn為一個完整字符串

INSERT(str, x, y, instr)

將字符串str從第x位置開始,y個字符長的子串替換為字符串instr

LOWER(str) /  UPPER(str)

將字符串str中所有字符變為小寫(大寫)

LEFT(str, x) /  RIGHT(str, x)

返回字符串str中最左(右)邊的x個字符

LTRIM(str) / RTRIM(str)

去掉字符串str左(右)邊的空格

TRIM(str)

去掉字符串str行頭和行尾的空格

LPAD(str,n,pad)  RPAD(str,n,pad)

使用字符串pad對字符串str最左(右)邊進行填充,直到長度為n個字符長度

REPEAT(str,x)

返回字符串str重複x次的結果

REPLACE(str,a,b)

用字符串b替換字符串str中所有出現的字符串a

STRCMP(str1, str2)

比較字符串str1和str2

SUBSTRING(str, x, y)

返回字符串str從x位置起y個字符長度的字符串

 

合併字符串

 

v  方式1:CONCATE()函數

§  CONCAT(s1, s2, …, sn)

§  將字符串合併起來,如果其中一個為NULL,  返回值為NULL

§  可以接受非字符串參數

§  例子:SELECT  CONCAT(『Hello』,『 World』, 1234);

§  例子:SELECT  CONCAT(『Hello』,』 World』, NULL);

 

mysql> select concat('hello','wold',1234);
+----+
| concat('hello','wold',1234) |
+----+
| hellowold1234               |
+----+
1 row in set (0.00 sec)

mysql> select concat('hello','wold',NULL);
+----+
| concat('hello','wold',NULL) |
+----+
| NULL                        |
+----+
1 row in set (0.00 sec)

 

v  方式2:CONCATE_WS()函數

§  CONCAT_WS(sep, s1, s2, …, sn)

§  將字符串合併起來,並用sep作為分隔符

§  例子:SELECT  CONCAT_WS(『%』,『Hi』,『World』);

mysql> select concat_ws('%','Hi','World');
+----+
| concat_ws('%','Hi','World') |
+----+
| Hi%World                    |
+----+
1 row in set (0.00 sec)

比較字符串

 

v  STRCMP(str1, str2) 函數

§  如果str1大於str2,返回1

§  如果str1等於str2,返回0

§  如果str1小於str2,返回-1

 

                                 STRCMP(『abc』,』abc』),

                                 STRCMP(『abc』,』abb』);

 

mysql> select strcmp('abc','abd'),strcmp('abc','abc'),strcmp('abc','abb');                   
+-+-+-+
| strcmp('abc','abd') | strcmp('abc','abc') | strcmp('abc','abb') |
+-+-+-+
|                  -1 |                   0 |                   1 |
+-+-+-+
1 row in set (0.00 sec)

長度函數

 

v  獲取字符串長度函數 LENGTH()

§  LENGTH(str) :  字節長度

§  例子:SELECT    LENGTH(『MySQL』) 

                                    LENGTH(『中國』) 

 

mysql> select LENGTH('MySql'),LENGTH('中國');\G
+--+---+
| LENGTH('MySql') | LENGTH('中國')   |
+--+---+
|               5 |                6 |
+--+---+
1 row in set (0.01 sec)

 

v  獲取字符函數 CHAR_LENGTH()

§  CHAR_LENGTH(str) :  字符長度

§  例子:SELECT   CHAR_LENGTH(『MySQL』) 

                                  CHAR_LENGTH(『中國』) 

 

mysql> select char_length('MySql'),char_length('中國');
+--+---+
| char_length('MySql') | char_length('中國')   |
+--+---+
|                    5 |                     2 |
+--+---+
1 row in set (0.00 sec)

替換字符串

v  INSERT(str, pos, len, newstr)

§  將字符串str中從pos位置開始長度為len的字符串用newstr替換

§  例子:SELECT   『這是MySQL資料庫管理系統』 原字符串,

     INSERT(『這是MySQL資料庫管理系統』 , 3, 5,『ORACLE』, 2) 替換後;

 

mysql> SELECT '這是MySQL資料庫管理系統' as  原字符串,  INSERT('這是MySQL資料庫管理系統',3,5,'ORACLE')  as 替換後;
+----++
| 原字符串                                    | 替換後                            |
+----++
| 這是MySQL資料庫管理系統          | 這是ORACLE資料庫管理系統          |
+----++
1 row in set (0.00 sec)

 

 

v  REPLACE(str, substr, newstr)

§  將str中substr替換為newstr

§  例子:SELECT   『這是SQL資料庫管理系統MySQL』 原字符串,

     REPLACE(『這是SQL資料庫管理系統MySQL』 , 』SQL』, 『ORACLE』) 替換後;

                

mysql> SELECT '這是MySQL資料庫管理系統' as  原字符串, 
    -> REPLACE('這是MySQL資料庫管理系統','SQL','ORACLE')  as 替換後;
+----+--+
| 原字符串                                    | 替換後                              |
+----+--+
| 這是MySQL資料庫管理系統          | 這是MyORACLE資料庫管理系統          |
+----+--+
1 row in set (0.00 sec)

                  

字母大小寫轉換

v  字母轉大寫:UPPER(s),  UCASE(s)

§  例子:SELECT    UPPER(『mysql』) 

                                   UCASE(『mysql』) 

mysql> SELECT UPPER('mysql'),ucase('mysql_small');
+-+--+
| UPPER('mysql') | ucase('mysql_small') |
+-+--+
| MYSQL          | MYSQL_SMALL          |
+-+--+
1 row in set (0.00 sec)

 

v  字母轉大寫:LOWER(s),  LCASE(s)

§  例子:SELECT    LOWER(『MySQL』) 

                                   LCASE(『MySQL』) 

mysql> SELECT    LOWER('MySQL'), LCASE('MySQL');
+-+-+
| LOWER('MySQL') | LCASE('MySQL') |
+-+-+
| mysql          | mysql          |
+-+-+
1 row in set (0.00 sec)

 

查找字符串

v  返回字符串位置:FIND_IN_SET(str1, str2)

§  返回在str2中與str1相匹配的字符串的位置,str2包含若干個用逗號隔開的字符串

§  例子:SELECT  FIND_IN_SET(『MySQL』,』ab,test,MySQL』)

 

mysql> SELECT  FIND_IN_SET('MySQL','ab,test,MySQL');
+---+
| FIND_IN_SET('MySQL','ab,test,MySQL') |
+---+
|                                    3 |
+---+
1 row in set (0.00 sec)

 

 

v  返回指定字符串位置:FIELD(str, str1, str2)

§  返回第一個與字符串str匹配的字符串的位置

§  例子:SELECT   FIELD(『ab』,』a』,』ab』,』ac』,』ab』)

 

v  返回字符串相匹配的開始位置:

§  LOCATE(str1, str): 返回str中str1的開始位置

§  POSITION(str1  IN  str)

§  INSTR(str, str1)

§  例子:SELECT  LOCATE(『SQL』,』MySQL』),

                        POSITION(『SQL』 IN 』MySQL』) , 

                        INSTR(『MySQL』,』SQL』) 

v  截取字符串:

§  LEFT(str, num) : 返回字符串str中左邊num個字母的字符串

§  RIGHT(str, num):返回字符串str中右邊num個字母的字符串

§  例子:SELECT   LEFT(『MySQL』, 2) 前兩個字符串,

                             RIGHT(『MySQL』, 2) 後兩個字符串;

                                  

v  截取指定位置和長度字符串:

§  SUBSTRING(str, num, len) :

§  MID(str, num, len)

§  返回字符串str中第num個位置開始長度為len的字符串

§  例子:SELECT   SUBSTRING(『MySQL』, 3,3) 截取的字符串,

                                MID(『MySQL』, 3,3) 截取的字符串;

mysql> select field('ab','a','ab','ac','ab');
+--+
| field('ab','a','ab','ac','ab') |
+--+
|                              2 |
+--+
1 row in set (0.00 sec)

mysql> select locate('SQL','MySQL'), position('SQL' in 'MySQL'), instr('MySQL','SQL');
+---+---+--+
| locate('SQL','MySQL') | position('SQL' in 'MySQL') | instr('MySQL','SQL') |
+---+---+--+
|                      3 |                          3 |                    3 |
+---+---+--+
1 row in set (0.00 sec)

mysql> select left('MYSQL',2),RIGHT('MYSQL',2);
+--+---+
| left('MYSQL',2) | RIGHT('MYSQL',2) |
+--+---+
| MY               | QL               |
+--+---+
1 row in set (0.00 sec)

mysql> select substring('MYSQL',3,3),mid('MYSQL',3,3);
+----+---+
| substring('MYSQL',3,3) | mid('MYSQL',3,3) |
+----+---+
| SQL                     | SQL              |
+----+---+
1 row in set (0.00 sec)

                                  

數值函數

函數

功能

ABS(x)

返回x的絕對值

CEIL(x)

返回大於x的最小整數值

FLOOR(x)

返回小於x的最大整數值

MOD(x,y)

返回x模y的值

RAND(x)

返回0~1的隨機數

ROUND(x,y)

返回x的四捨五入後有y位小數的數值

TRUNCATE(x,y)

返回x截斷為y位小數的數值

mysql> select rand(),rand(1),rand(2),rand(3);
++-+++
| rand()             | rand(1)             | rand(2)            | rand(3)            |
++-+++
| 0.1878656774646283 | 0.40540353712197724 | 0.6555866465490187 | 0.9057697559760601 |
++-+++
1 row in set (0.00 sec)

mysql> select ceil(2.1),ceil(-2.1),floor(2.1),floor(-2.1);
+-+--+--+---+
| ceil(2.1) | ceil(-2.1) | floor(2.1) | floor(-2.1) |
+-+--+--+---+
|         3 |         -2 |          2 |          -3 |
+-+--+--+---+
1 row in set (0.00 sec)

mysql> select round(2.3456),round(2.34567,2);
++---+
| round(2.3456) | round(2.34567,2) |
++---+
|             2 |             2.35 |
++---+
1 row in set (0.00 sec)

mysql> select truncate(122.23456,2),truncate(1223.3456,-1);
+---+----+
| truncate(122.23456,2) | truncate(1223.3456,-1) |
+---+----+
|                122.23 |                   1220 |
+---+----+
1 row in set (0.00 sec)

mysql> select mod(10,3);
+-+
| mod(10,3) |
+-+
|         1 |
+-+
1 row in set (0.00 sec)

日期和時間函數

函數

功能

CURDATE()

獲取當前日期

CURTIME()

獲取當前時間

NOW()

獲取當前的日期和時間

WEEK(date)

返回日期date為一年中的第幾周

YEAR(date)

返回日期date的年份

HOUR(time)

返回時間time的小時值

MINUTE(time)

返回時間time的分鐘值

MONTHNAME(time)

返回時間time的月份值

                           

 

v 獲取當前日期和時間

§  NOW(), CURRENT_TIMESTAMP(),

§  LOCALTIME(), SYSDATE()

v 獲取當前日期

§ CURDATE(),  CURRENT_DATE()

v 獲取當前時間

§ CURTIME(),  CURRENT_TIME()

v 獲取當前時間的年月季度周天時分秒

§YEAR(),QUARTER(),MONTH() ,WEEK(),DAYOFMONTH(),HOUR(),MINUTE(),SECOND()

# 獲取當前日期和時間
mysql> SELECT NOW(),CURRENT_TIMESTAMP(),LOCALTIME(),SYSDATE();
+-+-+-+-+
| NOW()               | CURRENT_TIMESTAMP() | LOCALTIME()         | SYSDATE()           |
+-+-+-+-+
| 2021-02-27 12:03:10 | 2021-02-27 12:03:10 | 2021-02-27 12:03:10 | 2021-02-27 12:03:10 |
+-+-+-+-+
1 row in set (0.02 sec)

#獲取當前日期
mysql> SELECT CURDATE(),CURRENT_DATE();
+--+-+
| CURDATE()  | CURRENT_DATE() |
+--+-+
| 2021-02-27 | 2021-02-27     |
+--+-+
1 row in set (0.00 sec)

#獲取當前時間
mysql> SELECT CURTIME(),CURRENT_TIME();
+-+-+
| CURTIME() | CURRENT_TIME() |
+-+-+
| 12:03:52  | 12:03:52       |
+-+-+
1 row in set (0.00 sec)

#獲取當前時間的年月季度周 WEEK 是一年中第幾周
mysql> SELECT NOW(),YEAR(NOW()),QUARTER(NOW()),MONTH(NOW()),WEEK(NOW());
+-+---+-+----+---+
| NOW()               | YEAR(NOW()) | QUARTER(NOW()) | MONTH(NOW()) | WEEK(NOW()) |
+-+---+-+----+---+
| 2021-02-27 12:05:13 |        2021 |              1 |            2 |           8 |
+-+---+-+----+---+
1 row in set (0.00 sec)

#天時分秒
mysql> SELECT DAYOFMONTH(NOW()),HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
+----+---+++
| DAYOFMONTH(NOW()) | HOUR(NOW()) | MINUTE(NOW()) | SECOND(NOW()) |
+----+---+++
|                27 |          12 |             5 |            53 |
+----+---+++
1 row in set (0.00 sec)

## xxxNAME  表示時間名稱 英語或中文
mysql> SELECT NOW(),MONTHNAME(NOW()),WEEKOFYEAR(NOW()) AS '年中第幾周', dayname(now()),dayofweek(now());
+-+---+--+-+---+
| NOW()               | MONTHNAME(NOW()) | 年中第幾周      | dayname(now()) | dayofweek(now()) |
+-+---+--+-+---+
| 2021-02-27 12:08:16 | February         |               8 | Saturday       |                7 |
+-+---+--+-+---+
1 row in set (0.00 sec)



mysql> select now(),dayofyear(now()) 年中第幾天 ,dayofmonth(now()) 月中第幾天;
+-+--+--+
| now()               | 年中第幾天      | 月中第幾天      |
+-+--+--+
| 2021-02-27 12:11:18 |              58 |              27 |
+-+--+--+
1 row in set (0.00 sec)

mysql> select now(),week(now()),weekofyear(now()),dayofweek(now()), dayofyear(now()),dayofmonth(now());
+-+---+----+---+---+----+
| now()               | week(now()) | weekofyear(now()) | dayofweek(now()) | dayofyear(now()) | dayofmonth(now()) |
+-+---+----+---+---+----+
| 2021-02-27 12:17:28 |           8 |                 8 |                7 |               58 |                27 |
+-+---+----+---+---+----+
1 row in set (0.00 sec)

計算日期和時間的函數

§  TO_DAYS(date):計算date與默認日期(0000年1月1日)之間的天數

§  FROM_DAYS(number):計算從默認日期開始number天后的日期

§  DATE(date1, date2):date1 與 date2 之間的相隔天數

§  ADDDATE(date, n):日期date加上n天后的日期

§  SUBDATE(date, n):日期date減去n天后的日期

mysql> select now() 當前時間,to_days(now()) 相隔天數, from_days(to_days(now())) 現在日期;
+-+----+----+
| 當前時間            | 相隔天數     | 現在日期     |
+-+----+----+
| 2021-02-27 12:22:41 |       738213 | 2021-02-27   |
+-+----+----+
1 row in set (0.00 sec)

mysql> select adddate(curdate(),5) , subdate(curdate(),5);
+--+--+
| adddate(curdate(),5) | subdate(curdate(),5) |
+--+--+
| 2021-03-04           | 2021-02-22           |
+--+--+
1 row in set (0.00 sec)

相關焦點

  • MySQL常用函數介紹
    前言: MySQL資料庫中提供了很豐富的函數,比如我們常用的聚合函數,日期及字符串處理函數等。
  • MySQL常用的函數
    微信公眾號:PHP在線在使用MySQL的時候,靈活運用函數可以提高開發效率,方便解決一些棘手的問題。本文講解的MySQL常用函數包括常用的字符串函數、數值函數、日期和時間函數、聚合函數等。 ,length ,pad) //在字符串後用pad補充,直到長度為lengthRTRIM (string) //去除字符串後端空格STRCMP (string1 ,string2 ) //逐字符比較兩字串大小,SUBSTRING (str , position [,length ]) //從字符串的position開始,取length個字符,SUBSTR和SUBSTRIN函數功能一樣
  • mysql常用函數大全
    字符串函數1.字符串連接CONCATSELECT CONCAT('my','sql')2.字符串替換函數insertSELECTINSERT('hi,mysql',4,5,'sql server')3.字符串轉小寫lowerSELECT LOWER('MySql')4.字符串轉大寫upperSELECT UPPER('layui')
  • MySQL最常用分組聚合函數
    常用的組函數:AVG([distinct] expr)求平均值COUNT({*|[distinct] } expr)統計行的數量MAX([distinct] expr)求最大值MIN([distinct] expr)求最小值SUM([distinct] expr
  • MySQL常用判斷函數總結!!看你都用過沒
    在MySQL中基於對條件判斷的函數又叫「控制流函數」,用於mysql語句中的邏輯判斷。本文帶大家一起來看一看MySQL中都有哪些常用的控制流函數,以及控制流函數的使用場景都有哪些?MySQl中常見的控制流(判斷)函數包括以下三種,我們今天也著重來看一看這三種判斷函數都是怎麼玩兒的:1、case when then else end2、IF(expr,if_true_expr,if_false_expr)3、IFNULL(expr1,expr2)
  • MySQL 函數相關
    1 常用函數一、數學函數    ROUND(x,y)        返回參數x的四捨五入的有y位小數的值    RAND()        返回0到1內的隨機值,可以通過提供一個參數(種子)使RAND()隨機數生成器生成一個指定的值。
  • MySQL那些與日期和時間相關的函數
    【IT168 技術】日期函數可能是比較常使用的一種函數。下面介紹一些最為常用的日期函數及一些容易忽略的問題。  1. NOW、CURRENT_TIMESTAMP和SYSDATE  這些函數都能返回當前的系統時間,它們之間有區別嗎?先來看個例子。
  • mysql_data_seek函數詳解
    定義和用法mysql_data_seek()函數的作用是:移動內部結果(行)的指針內部的行指針[internal row pointer]是指:通過mysql_query()函數返回的當前結果所處的行的位置。
  • MySQL常用函數,你真得看看!
    (實參列表)【from 表】    【】中內容可省略正文: 字符函數:length:獲取字節個數(utf-8 一個漢字為3個字節,gbk為2個字節)SELECT LENGTH('cbuc')    # 輸出 4SELECT LENGTH('蔡不菜cbuc')   # 輸出13concat:拼接字符串SELECT CONCAT
  • mysql實現php函數explode功能mysql_explode
    table temp_keys(id int(10) primary key auto_increment,keystr varchar(255));新建一個自定義函數mysql_explode,將"獨孤九劍,萬劍歸宗,乾坤大挪移"這樣的字符串以逗號為分隔符以多條記錄的形式存入資料庫等同於一下子完成了如下操作:insert into temp_keys values(null,'獨孤九劍');insert into temp_keys
  • MySQL常用函數學習
    下面簡單介紹一下MySQL中包含的幾類常用函數。聚合函數聚合函數可實現根據一組數據求出一個值,聚合函數的結果值只根據選定數據行中非NULL值進行計算,NULL值被忽略。下面介紹一下常用的幾個字符串函數。UPPER(s)和UCASE(s)函數UPPER(s)和UCASE(s)函數均可用於將字符串s中的所有哦字母變成大寫字母。
  • mysql隨機函數的例子
    mysql隨機函數的例子,用過mysql的同學都知道rand()函數是最最常見的,要實現隨機數的功能,還非得藉助rand(),它的作用是產生0到1直接的隨機數,下面就列出幾個常見的用例。--或者select floor(rand()*270+250)隨機250到520的數round是四捨五入,floor是向下取整生成隨機的11位手機號碼,利用自定義函數來實現
  • 關於mysql中運算符與函數的概述
    運算符是告訴mysql執行特定的算術或邏輯操作的符號,運算符連接著各個表達式中的操作數,其作用是用來指明對操作數進行的運算。mysql字符函數:1.字符串連接函數:2.字符中轉換大小寫函數:3.求字符串長度的函數:4.刪除空格函數:5.截取字符串:6.獲取指定長度的字符串函數:
  • 帶你深入了解MySQL ifnull()函數
    微信公眾號:PHP在線下文為您介紹的MySQL ifnull()函數 功能和nvl()函數類似,
  • MySQL常用函數整理
    點擊關註上方「SQL資料庫開發」,設為「置頂或星標」,第一時間送達乾貨之前已經整理過了SQL Server的一些常用函數,有需要的也可以一起看一下SQL Server常用函數整理今天繼續分享MySQL的一些常用函數。
  • Mysql常用的增刪改查語法
    查詢的基本語法select 列名1 [as] [列別名],列名2 from 表1 [as] [表別名] [left] join 表2 on 連接條件 [left] join 表3 on 連接條件 where 檢索條件(不可用統計函數) group by 分組列1,列2 having 檢索條件(可用統計函數
  • 由MySQL字符串函數考慮到的繞過利用
    來自WgpSec Team 成員 f1hgb投稿背景本次文章是在對一次時間盲注時if等函數被ban的時候
  • MySQL 常用語法總結
    例:  mysql> select t1.name, t2.salary from employee AS t1, info AS t2 where t1.name = t2.name;  mysql> select college, region, seed from tournament  ORDER BY region, seed;  mysql
  • 超全整理,MySQL常用函數
    點擊關註上方「SQL資料庫開發」,設為「置頂或星標」,第一時間送達乾貨之前已經整理過了SQL Server的一些常用函數,有需要的也可以一起看一下SQL Server常用函數整理今天繼續分享MySQL的一些常用函數。
  • MySQL函數大全及用法示例(一)
    1、字符串函數ascii(str)   返回字符串str的第一個字符的