主頁 > 資料庫 > MySQL講義第 38 講——select 查詢之函式(1):字串函式

MySQL講義第 38 講——select 查詢之函式(1):字串函式

2020-11-03 11:40:09 資料庫

MySQL講義第 38 講——select 查詢之函式(1):字串函式

使用函式可在查詢時構造更加靈活的查詢條件,MySQL 提供了處理字串的函式,下面對字串函式進行詳細的介紹并舉例說明其用法,在當前資料庫中創建一個 student 表,表結構及表中的資料如下:

mysql> desc student;
+--------+--------------+------+-----+---------+-------+
| Field  | Type         | Null | Key | Default | Extra |
+--------+--------------+------+-----+---------+-------+
| s_id   | char(5)      | NO   | PRI | NULL    |       |
| s_name | char(20)     | YES  |     | NULL    |       |
| birth  | datetime     | YES  |     | NULL    |       |
| phone  | char(20)     | YES  |     | NULL    |       |
| addr   | varchar(100) | YES  |     | NULL    |       |
+--------+--------------+------+-----+---------+-------+
5 rows in set (0.03 sec)

mysql> select * from student;
+-------+--------------+---------------------+-------------+-----------+
| s_id  | s_name       | birth               | phone       | addr      |
+-------+--------------+---------------------+-------------+-----------+
| s1801 | 劉蓓         | 2000-03-08 00:00:00 | 15903735566 | Kaifeng   |
| s1802 | 趙蕓         | 2000-04-27 00:00:00 | 15903735533 | Zheng     |
| s1803 | 張毅得       | 1999-11-20 00:00:00 | 15903735544 | Xinxiang  |
| s1804 | 曹夢德       | 1999-08-07 00:00:00 | 15903735577 | Zheng     |
| s1805 | 孫泉         | 2000-10-25 00:00:00 | 15903735587 | Xinyang   |
| s1806 | 司馬意       | 2000-10-24 00:00:00 | 15903735581 | Xinxiang  |
| s1807 | 司馬招       | 2000-08-08 00:00:00 | 15903734444 | Anyang    |
| s1808 | 趙紫龍       | 2001-06-26 00:00:00 | 15903736666 | Zhumadian |
| s1809 | 呂步         | 2001-04-30 00:00:00 | 15903737777 | Nanyang   |
| s1810 | 劉珊         | 2002-10-26 00:00:00 | 15903732222 | Zhumadian |
| s1811 | 諸葛亮       | 2001-11-24 00:00:00 | 15903731111 | Zhumadian |
| s1901 | 諸葛英       | 2001-08-09 00:00:00 | 15903731234 | Xinxiang  |
| s1902 | 司馬相如     | 2001-12-08 00:00:00 | 15903731144 | Nanyang   |
| s1903 | 王召軍       | 2002-10-23 00:00:00 | 15903731199 | Kaifeng   |
| s1904 | 康西         | 2001-10-26 00:00:00 | 15903731177 | Kaifeng   |
| s1905 | 乾龍         | 2000-10-27 00:00:00 | 15903732211 | Kaifeng   |
| s1906 | 朱元張       | 2000-08-07 00:00:00 | 15903732233 | Kaifeng   |
| s1907 | 李氏敏       | 2001-10-23 00:00:00 | 15903732244 | Zhumadian |
| s1908 | 趙匡銀       | 2001-10-24 00:00:00 | 15903733322 | Xinyang   |
| s1909 | 趙夠         | 2001-10-25 00:00:00 | 15903733366 | Anyang    |
| s2011 | 王保墻       | 2001-10-22 00:00:00 | 15903733355 | Xinxiang  |
| s2012 | 李曉露       | 2001-11-27 00:00:00 | 15903731441 | Zhumadian |
| s2013 | 賈大空       | 2002-03-08 00:00:00 | 15903734422 | Xinxiang  |
| s2014 | 孫悟空       | 2002-10-25 00:00:00 | 15903734466 | Anyang    |
| s2015 | 豬八戒       | 2001-10-26 00:00:00 | 15903734477 | Xinxiang  |
| s2016 | 沙和尚       | 2002-10-24 00:00:00 | 15903736611 | Anyang    |
| s2017 | 唐三藏       | 2001-09-08 00:00:00 | 15903736655 | Nanyang   |
| s2018 | 白龍馬       | 2001-12-05 00:00:00 | 15903736633 | Nanyang   |
| s2019 | 如來         | 2002-01-27 00:00:00 | 15903736699 | Nanyang   |
| s2020 | 觀音         | 2002-02-23 00:00:00 | 15903737744 | Zhumadian |
+-------+--------------+---------------------+-------------+-----------+
30 rows in set (0.23 sec)

1、ASCII() 函式

ASCII() 函式回傳一個字符的 ASCII 碼,如果引數為字串,則回傳第一個字符的 ASCII 碼,語法如下:

ASCII(str);

--說明:1)函式的引數為字串,
(2)回傳字串中第一個字符的 ASCII 碼,

例如:

mysql> SELECT
    -> ASCII('abc');
+--------------+
| ASCII('abc') |
+--------------+
|           97 |
+--------------+
1 row in set (0.02 sec)

mysql> SELECT 
    -> ASCII(NULL);
+-------------+
| ASCII(NULL) |
+-------------+
|        NULL |
+-------------+
1 row in set (0.00 sec)

mysql> SELECT 
    -> ASCII('');
+-----------+
| ASCII('') |
+-----------+
|         0 |
+-----------+
1 row in set (0.01 sec)

2、BIN() 函式

BIN() 函式把一個整數轉化為二進制數,回傳結果的型別為字串,語法如下:

BIN(n);

--說明:1)引數為一個整數,如果引數為小數,則取整后再進行處理,
(2)把數值 n 轉化為二進制形式,回傳值是一個由 01 組成的字串,

例如:

mysql> SELECT 
    -> BIN(12.85);
+------------+
| BIN(12.85) |
+------------+
| 1100       |
+------------+
1 row in set (0.00 sec)

mysql> SELECT 
    -> BIN(1023);
+------------+
| BIN(1023)  |
+------------+
| 1111111111 |
+------------+
1 row in set (0.00 sec)

3、CHAR() 函式

CHAR() 函式把多個 ASCII 碼轉換為對應的字符,并連接成一個字串,語法如下:

CHAR(n1, n2, ...);

說明:
(1)引數為若干個表示 ASCII 碼的整數,
(2)回傳由 n1,n2,… 的 ASCII 碼對應的字符組成的字串,

例如:

mysql> SELECT
    -> CHAR(97,98,99,65,66,67);
+-------------------------+
| CHAR(97,98,99,65,66,67) |
+-------------------------+
| abcABC                  |
+-------------------------+
1 row in set (0.00 sec)

4、CHAR_LENGTH() 函式

CHAR_LENGTH() 函式回傳一個字串的字符個數,語法如下:

CHAR_LENGTH(str);

--說明:1)函式的引數為一個字串,
(2)回傳字串中包含字符的個數,包括半角字符和全角字符,

例如:

mysql> SELECT 
    -> CHAR_LENGTH('ABC0123');
+------------------------+
| CHAR_LENGTH('ABC0123') |
+------------------------+
|                      7 |
+------------------------+
1 row in set (0.00 sec)

mysql> SELECT 
    -> CHAR_LENGTH('化工路258號');
+--------------------------------+
| CHAR_LENGTH('化工路258號')     |
+--------------------------------+
|                              7 |
+--------------------------------+
1 row in set (0.00 sec)

5、LENGTH() 函式

LENGTH() 函式回傳一個字串的長度,用位元組表示,語法如下:

LENGTH(str);

--說明:1)函式的引數為一個字串,
(2)回傳字串的長度(單位為位元組),
(3)多位元組字符的長度取決于所用的字符集,比如 utf8 字符集一個漢字為 3 個位元組,而 latin1 字符集一個漢字為 2 位元組,

例如:

mysql> SHOW VARIABLES LIKE '%CHARACT%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | utf8                       |
| character_set_connection | utf8                       |
| character_set_database   | utf8                       |
| character_set_filesystem | binary                     |
| character_set_results    | utf8                       |
| character_set_server     | utf8                       |
| character_set_system     | utf8                       |
| character_sets_dir       | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
8 rows in set (0.09 sec)

mysql> SELECT
    -> LENGTH('ABC0123');
+-------------------+
| LENGTH('ABC0123') |
+-------------------+
|                 7 |
+-------------------+
1 row in set (0.00 sec)

mysql> SELECT 
    -> LENGTH('河南省');
+---------------------+
| LENGTH('河南省')    |
+---------------------+
|                   9 |
+---------------------+
1 row in set (0.00 sec)

6、CONCAT() 函式

CONCAT() 函式用于字串的連接,語法如下:

CONCAT(str1,str2,...);

--說明:1)函式的引數為若干個字串,
(2)把引數中包含的字串連接成一個字串,然后回傳,

例如:

mysql> SELECT
    -> s_id,s_name,concat(addr,', ',phone) AS contact
    -> FROM
    -> student
    -> WHERE
    -> s_id LIKE 's18%';
+-------+-----------+------------------------+
| s_id  | s_name    | contact                |
+-------+-----------+------------------------+
| s1801 | 劉蓓      | Kaifeng, 15903735566   |
| s1802 | 趙蕓      | Zheng, 15903735533     |
| s1803 | 張毅得    | Xinxiang, 15903735544  |
| s1804 | 曹夢德    | Zheng, 15903735577     |
| s1805 | 孫泉      | Xinyang, 15903735587   |
| s1806 | 司馬意    | Xinxiang, 15903735581  |
| s1807 | 司馬招    | Anyang, 15903734444    |
| s1808 | 趙紫龍    | Zhumadian, 15903736666 |
| s1809 | 呂步      | Nanyang, 15903737777   |
| s1810 | 劉珊      | Zhumadian, 15903732222 |
| s1811 | 諸葛亮    | Zhumadian, 15903731111 |
+-------+-----------+------------------------+
11 rows in set (0.00 sec)

7、CONCAT_WS() 函式

CONCAT_WS() 函式用于多個字串的連接,可以指定連接字串時的分隔符,語法如下:

CONCAT_WS(separator,st1,st2,...);

--說明:1)第一個引數為連接字串時各字串之間的分隔符
(2)把引數中包含的字串連接成一個字串,并且用一個分隔符隔開,

例如:

mysql> SELECT
    -> s_id,s_name,CONCAT_WS(',',addr,phone) AS contact
    -> FROM
    -> student
    -> WHERE
    -> s_id LIKE 's18%';
+-------+-----------+-----------------------+
| s_id  | s_name    | contact               |
+-------+-----------+-----------------------+
| s1801 | 劉蓓      | Kaifeng,15903735566   |
| s1802 | 趙蕓      | Zheng,15903735533     |
| s1803 | 張毅得    | Xinxiang,15903735544  |
| s1804 | 曹夢德    | Zheng,15903735577     |
| s1805 | 孫泉      | Xinyang,15903735587   |
| s1806 | 司馬意    | Xinxiang,15903735581  |
| s1807 | 司馬招    | Anyang,15903734444    |
| s1808 | 趙紫龍    | Zhumadian,15903736666 |
| s1809 | 呂步      | Nanyang,15903737777   |
| s1810 | 劉珊      | Zhumadian,15903732222 |
| s1811 | 諸葛亮    | Zhumadian,15903731111 |
+-------+-----------+-----------------------+
11 rows in set (0.00 sec)

8、GROUP_CONCAT() 函式

GROUP_CONCAT() 函式用于把一個欄位中的所有資料進行連接,可以在分組查詢時使用,語法如下:

GROUP_CONCAT([distinct] fieldname [order by 排序欄位 asc|desc] separator '分隔符');

--說明:1)該函式對表中的一個欄位進行處理,把該欄位的所有資料連接起來,
(2)該函式一般用于分組查詢,其用法類似于聚合函式,
(3)把欄位的所有資料使用 separator 指定的分隔符連接起來,如果省略 separator,則默認的分隔符為逗號,
(4distinct:取出重復的資料,
(5order by:按表中的某個欄位排序之后再進行連接,

例如:

(1)對 student 表按 addr 進行分組,使用 GROUP_CONCAT 連接 s_name

mysql> SELECT
    -> addr,GROUP_CONCAT(s_name)
    -> FROM
    -> student
    -> GROUP BY
    -> addr;
+-----------+-------------------------------------------------------------+
| addr      | GROUP_CONCAT(s_name)                                        |
+-----------+-------------------------------------------------------------+
| Anyang    | 孫悟空,趙夠,司馬招,沙和尚                                   |
| Kaifeng   | 劉蓓,朱元張,乾龍,康西,王召軍                                |
| Nanyang   | 唐三藏,呂步,司馬相如,白龍馬,如來                            |
| Xinxiang  | 豬八戒,王保墻,賈大空,諸葛英,司馬意,張毅得                   |
| Xinyang   | 趙匡銀,孫泉                                                 |
| Zheng     | 趙蕓,曹夢德                                                 |
| Zhumadian | 李曉露,李氏敏,諸葛亮,劉珊,趙紫龍,觀音                       |
+-----------+-------------------------------------------------------------+
7 rows in set (0.00 sec)

(2)按出生日期排序再連接 s_name

mysql> SELECT
    -> addr,GROUP_CONCAT(s_name ORDER BY birth)
    -> FROM
    -> student
    -> GROUP BY
    -> addr;
+-----------+-------------------------------------------------------------+
| addr      | GROUP_CONCAT(s_name ORDER BY birth)                         |
+-----------+-------------------------------------------------------------+
| Anyang    | 司馬招,趙夠,沙和尚,孫悟空                                   |
| Kaifeng   | 劉蓓,朱元張,乾龍,康西,王召軍                                |
| Nanyang   | 呂步,唐三藏,白龍馬,司馬相如,如來                            |
| Xinxiang  | 張毅得,司馬意,諸葛英,王保墻,豬八戒,賈大空                   |
| Xinyang   | 孫泉,趙匡銀                                                 |
| Zheng     | 曹夢德,趙蕓                                                 |
| Zhumadian | 趙紫龍,李氏敏,諸葛亮,李曉露,觀音,劉珊                       |
+-----------+-------------------------------------------------------------+
7 rows in set (0.00 sec)

9、FORMAT() 函式

FORMAT() 函式用于把某個數值進行四舍五入后回傳,回傳結果的型別為字串,語法如下:

FORMAT(x,d);

--說明:1)對數值 x 進行四舍五入運算,保留 d 為小數,回傳值為一個字串,
(2)該函式的功能和 ROUND() 函式類似,回傳值的型別不同,

例如:

mysql> SELECT 
    -> FORMAT(125.487,1);
+-------------------+
| FORMAT(125.487,1) |
+-------------------+
| 125.5             |
+-------------------+
1 row in set (0.00 sec)

10、INSERT() 和 REPLACE() 函式

INSERT() 和 REPLACE() 函式用于把一個字串中的某些字符替換為另外的字符,語法如下:

INSERT(str,pos,len,instr);
REPLACE(str1,str2,str3);

--說明:1INSERT() 函式:把字串 str 從 pos 位置開始的 len 個字符替換為 instr 字串,并回傳替換之后的字串,
(2)如果 pos 超過字串長度,則不進行任何替換,直接回傳原字串,
(3REPLACE() 函式:把 str1 中的 str2 子串替換為 str3 子串,
(4)如果要替換的字串的位置確定,內容不知道,使用 INSERT() 函式,
(5)如果要替換的字串的內容確定,位置不確定,使用 REPLACE() 函式,

例如:

mysql> SELECT
    -> s_id,s_name,INSERT(phone,4,4,'****')
    -> FROM
    -> student
    -> WHERE
    -> s_id LIKE 's18%';
+-------+-----------+--------------------------+
| s_id  | s_name    | INSERT(phone,4,4,'****') |
+-------+-----------+--------------------------+
| s1801 | 劉蓓      | 159****5566              |
| s1802 | 趙蕓      | 159****5533              |
| s1803 | 張毅得    | 159****5544              |
| s1804 | 曹夢德    | 159****5577              |
| s1805 | 孫泉      | 159****5587              |
| s1806 | 司馬意    | 159****5581              |
| s1807 | 司馬招    | 159****4444              |
| s1808 | 趙紫龍    | 159****6666              |
| s1809 | 呂步      | 159****7777              |
| s1810 | 劉珊      | 159****2222              |
| s1811 | 諸葛亮    | 159****1111              |
+-------+-----------+--------------------------+
11 rows in set (0.00 sec)

mysql> SELECT
    -> s_id,s_name,REPLACE(phone,'159','136')
    -> FROM
    -> student
    -> WHERE
    -> s_id LIKE 's18%';
+-------+-----------+----------------------------+
| s_id  | s_name    | REPLACE(phone,'159','136') |
+-------+-----------+----------------------------+
| s1801 | 劉蓓      | 13603735566                |
| s1802 | 趙蕓      | 13603735533                |
| s1803 | 張毅得    | 13603735544                |
| s1804 | 曹夢德    | 13603735577                |
| s1805 | 孫泉      | 13603735587                |
| s1806 | 司馬意    | 13603735581                |
| s1807 | 司馬招    | 13603734444                |
| s1808 | 趙紫龍    | 13603736666                |
| s1809 | 呂步      | 13603737777                |
| s1810 | 劉珊      | 13603732222                |
| s1811 | 諸葛亮    | 13603731111                |
+-------+-----------+----------------------------+
11 rows in set (0.00 sec)

11、大小寫轉換函式

MySQL提供了四個大小寫轉換函式,語法如下:

LCASE(str);
UCASE(str);
LOWER(str);
UPPER(str);

--說明:1)UCASE 和 UPPER 可以把字串中的字母轉換為大寫字母,
(2)LCASE 和 LOWER 可以把字串中的字母轉換為小寫字母,
(3)非字母不轉換,

例如:

mysql> set @str = 'Paypal is a great site and is used by many to send and receive money.';
Query OK, 0 rows affected (0.00 sec)

mysql> SELECT
    -> LCASE(@str);
+-----------------------------------------------------------------------+
| LCASE(@str)                                                           |
+-----------------------------------------------------------------------+
| paypal is a great site and is used by many to send and receive money. |
+-----------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT
    -> UCASE(@str);
+-----------------------------------------------------------------------+
| UCASE(@str)                                                           |
+-----------------------------------------------------------------------+
| PAYPAL IS A GREAT SITE AND IS USED BY MANY TO SEND AND RECEIVE MONEY. |
+-----------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT
    -> LOWER(@str);
+-----------------------------------------------------------------------+
| LOWER(@str)                                                           |
+-----------------------------------------------------------------------+
| paypal is a great site and is used by many to send and receive money. |
+-----------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT
    -> UPPER(@str);
+-----------------------------------------------------------------------+
| UPPER(@str)                                                           |
+-----------------------------------------------------------------------+
| PAYPAL IS A GREAT SITE AND IS USED BY MANY TO SEND AND RECEIVE MONEY. |
+-----------------------------------------------------------------------+
1 row in set (0.00 sec)

12、截取子字串函式

該類函式可以從一個字串中截取一個字串,一共有三個,語法如下:

LEFT(str,n);
RIGHT(str,n);
SUBSTR(str,m,n);
SUBSTRING(str,m,n);

--說明:1LEFT() 函式是從字串最前端開始截取 n 個字符并回傳,
(2RIGHT() 函式是從字串最右端截取 n 個字符并回傳,
(3)SUBSTR() 和 SUBSTRING() 兩個函式的功能相同,從第 m 個字符開始,截取 n 個字符并回傳,

例如:

mysql> SELECT
    -> company_id,
    -> registration_address,
    -> LEFT(registration_address,6)
    -> FROM 
    -> company_information
    -> WHERE
    -> company_id < '000010';
+------------+-------------------------------------------------------------+----------------+| 
company_id | registration_address                              | LEFT(registration_address,6) 
|+------------+------------------------------------------------------------+----------------+| 
000001     | 廣東省深圳市羅湖區深南東路5047| 廣東省深圳市       |
000002     | 廣東省深圳市鹽田區大梅沙環梅路33號萬科中心                      | 廣東省深圳市       |
000004     | 廣東省深圳市南山區中心路(深圳灣段)3333號中鐵南方總部大廈503| 廣東省深圳市       |
000005     | 廣東省深圳市人民南路發展中心大廈13| 廣東省深圳市       |
000006     | 廣東省深圳市羅湖區寶安南路2014號振業大廈B座11-17| 廣東省深圳市       | 
000007     | 廣東省深圳市華強北路1058號現代之窗大廈A座25| 廣東省深圳市        | 
000008     | 北京市海淀區高梁橋斜街59號院1號樓161606                      | 北京市海淀區        | 
000009     | 廣東省深圳市筍崗東路1002號寶安廣場A座28-29| 廣東省深圳市        |
+------------+-----------------------------------------------------------+--------------------+
8 rows in set (0.00 sec)

mysql> SELECT
    -> company_id,
    -> web_address,
    -> RIGHT(web_address,CHAR_LENGTH(web_address)-4) AS web_address
    -> FROM 
    -> company_information
    -> WHERE
    -> company_id < '000010';
+------------+-------------------------+---------------------+
| company_id | web_address             | web_address         |
+------------+-------------------------+---------------------+
| 000001     | www.bank.pingan.com     | bank.pingan.com     |
| 000002     | www.vanke.com           | vanke.com           |
| 000004     | www.sz000004.cn         | sz000004.cn         |
| 000005     | www.fountain.com.cn     | fountain.com.cn     |
| 000006     | www.zhenye.com          | zhenye.com          |
| 000007     | None                    |                     |
| 000008     | www.shenzhou-gaotie.com | shenzhou-gaotie.com |
| 000009     | www.chinabaoan.com      | chinabaoan.com      |
+------------+-------------------------+---------------------+
8 rows in set (0.01 sec)

mysql> SELECT
    -> company_id,
    -> registration_address,
    -> SUBSTRING(registration_address,7) AS registration_address
    -> FROM 
    -> company_information
    -> WHERE
    -> company_id < '000010';
+------------+------------------------------------------------+-------------------------
+| company_id | registration_address                           | registration_address  
|+------------+------------------------------------------------+------------------------
| 000001  | 廣東省深圳市羅湖區深南東路5047| 羅湖區深南東路5047|
| 000002  | 廣東省深圳市鹽田區大梅沙環梅路33號萬科中心         | 鹽田區大梅沙環梅路33號萬科中心  |
| 000004  | 廣東省深圳市南山區中心路(深圳灣段)3333號中鐵南方總部大廈503| 南山區中心路(深圳灣段)3333號中鐵南方總部大廈503|
| 000005  | 廣東省深圳市人民南路發展中心大廈13| 人民南路發展中心大廈13|
| 000006  | 廣東省深圳市羅湖區寶安南路2014號振業大廈B座11-17| 羅湖區寶安南路2014號振業大廈B座11-17|
| 000007  | 廣東省深圳市華強北路1058號現代之窗大廈A座25| 華強北路1058號現代之窗大廈A座25|
| 000008  | 北京市海淀區高梁橋斜街59號院1號樓161606         | 高梁橋斜街59號院1號樓161606    |
| 000009  | 廣東省深圳市筍崗東路1002號寶安廣場A座28-29| 筍崗東路1002號寶安廣場A座28-29|
+------------+----------------------------------------------+-----------------------------
8 rows in set (0.00 sec)

mysql> SELECT
    -> company_id,
    -> registration_address,
    -> SUBSTRING(registration_address,4,3) AS registration_address
    -> FROM 
    -> company_information
    -> WHERE
    -> company_id < '000010';
+------------+--------------------------------------------------------+----------------------+| company_id | registration_address                                 | registration_address |
+------------+-------------------------------------------------------------------+------------+
| 000001     | 廣東省深圳市羅湖區深南東路5047| 深圳市     |
| 000002     | 廣東省深圳市鹽田區大梅沙環梅路33號萬科中心                            | 深圳市     |
| 000004     | 廣東省深圳市南山區中心路(深圳灣段)3333號中鐵南方總部大廈503| 深圳市     |
| 000005     | 廣東省深圳市人民南路發展中心大廈13| 深圳市     |
| 000006     | 廣東省深圳市羅湖區寶安南路2014號振業大廈B座11-17| 深圳市     |
| 000007     | 廣東省深圳市華強北路1058號現代之窗大廈A座25| 深圳市     |
| 000008     | 北京市海淀區高梁橋斜街59號院1號樓161606                            | 海淀區     |
| 000009     | 廣東省深圳市筍崗東路1002號寶安廣場A座28-29| 深圳市     |
+------------+---------------------------------------------------+--------------------------+| 
8 rows in set (0.03 sec)

13、查找字串函式

查找字串函式用于查找某個字串在另一個字串中出現的位置,一共有兩個,語法如下:

LOCATE(str1,str2);
POSITION(str1 in str2);

--說明:1)如果 str1 是 str2 的子字串,則回傳子字串第一次出現的位置,否則回傳0,
(2)LOCATE 函式和 POSTION 函式用法相同,不同點是 LOCATE 函式的兩個引數用逗號隔開,POSITION 函式的兩個引數用 in 隔開,

舉例:

mysql> SELECT
    -> company_id,
    -> company_abbreviation,
    -> registration_address
    -> FROM 
    -> company_information
    -> WHERE
    -> LOCATE('深圳市羅湖區',registration_address) > 0;
+------------+----------------------+-----------------------------------------------------+
| company_id | company_abbreviation | registration_address                                |
+------------+----------------------+----------------------------------------------------+
| 000001     | 平安銀行             | 廣東省深圳市羅湖區深南東路5047|
| 000006     | 深振業A             | 廣東省深圳市羅湖區寶安南路2014號振業大廈B座11-17|
| 000040     | 東旭藍天             | 廣東省深圳市羅湖區東門中路1011號鴻基大廈25-27|
| 000048     | 康達爾               | 廣東省深圳市羅湖區深南東路1086號集浩大廈二、三樓       |
| 000061     | 農產品               | 廣東省深圳市羅湖區布吉路1021號天樂大廈22|
| 000099     | 中信海直             | 廣東省深圳市羅湖區解放西路188|
| 002285     | 世聯行               | 廣東省深圳市羅湖區深南東路2028號羅湖商務中心12|
| 002325     | 洪濤股份             | 廣東省深圳市羅湖區泥崗西洪濤路17|
| 002482     | 廣田集團             | 廣東省深圳市羅湖區深南東路2098|
| 002620     | 瑞和股份             | 廣東省深圳市羅湖區深南東路3027號瑞和大廈               |
| 002736     | 國信證券             | 廣東省深圳市羅湖區紅嶺中路1012號國信證券大廈十六層至二十六層    |
| 002740     | 愛迪爾               | 廣東省深圳市羅湖區東曉路1005號北樓二、三樓             |
| 002822     | 中裝建設             | 廣東省深圳市羅湖區深南東路4002號鴻隆世紀廣場四-五層(僅限辦公)  |
| 002830     | 名雕股份             | 廣東省深圳市羅湖區寶安北筍崗倉831830號陸層615616|
| 300532     | 今天國際             | 廣東省深圳市羅湖區筍崗東路1002寶安廣場A座10樓F、G、H      |
| 600892     | 大晟文化             | 廣東省深圳市羅湖區筍崗東路3012號中民時代廣場B座2103|
+------------+---------------------+---------------------------------------------------------+
16 rows in set (0.02 sec)

mysql> SELECT
    -> company_id,
    -> company_abbreviation,
    -> registration_address,
    -> LOCATE('路',registration_address) AS locate
    -> FROM 
    -> company_information
    -> WHERE
    -> LOCATE('深圳市羅湖區',registration_address) > 0;
+------------+----------------------+------------------------------------------------+--------+
| company_id | company_abbreviation | registration_address                           | locate |
+------------+----------------------+----------------------------------------------+--------+
| 000001     | 平安銀行  | 廣東省深圳市羅湖區深南東路5047|     13 |
| 000006     | 深振業A  | 廣東省深圳市羅湖區寶安南路2014號振業大廈B座11-17|     13 |
| 000040     | 東旭藍天  | 廣東省深圳市羅湖區東門中路1011號鴻基大廈25-27|     13 |
| 000048     | 康達爾    | 廣東省深圳市羅湖區深南東路1086號集浩大廈二、三樓             |     13 |
| 000061     | 農產品    | 廣東省深圳市羅湖區布吉路1021號天樂大廈22|     12 |
| 000099     | 中信海直  | 廣東省深圳市羅湖區解放西路188|     13 |
| 002285     | 世聯行    | 廣東省深圳市羅湖區深南東路2028號羅湖商務中心12|     13 |
| 002325     | 洪濤股份  | 廣東省深圳市羅湖區泥崗西洪濤路17|     15 |
| 002482     | 廣田集團  | 廣東省深圳市羅湖區深南東路2098|     13 |
| 002620     | 瑞和股份  | 廣東省深圳市羅湖區深南東路3027號瑞和大廈                     |     13 |
| 002736     | 國信證券  | 廣東省深圳市羅湖區紅嶺中路1012號國信證券大廈十六層至二十六層   |     13 |
| 002740     | 愛迪爾    | 廣東省深圳市羅湖區東曉路1005號北樓二、三樓                   |     12 |
| 002822     | 中裝建設  | 廣東省深圳市羅湖區深南東路4002號鴻隆世紀廣場四-五層(僅限辦公)|     13 |
| 002830     | 名雕股份  | 廣東省深圳市羅湖區寶安北筍崗倉831830號陸層615616|      0 |
| 300532     | 今天國際  | 廣東省深圳市羅湖區筍崗東路1002寶安廣場A座10樓F、G、H          |     13 |
| 600892     | 大晟文化  | 廣東省深圳市羅湖區筍崗東路3012號中民時代廣場B座2103|     13 |
+------------+----------------------+--------------------------------------------------+--------+
16 rows in set (0.01 sec)

mysql> SELECT
    -> company_id,
    -> company_abbreviation,
    -> web_address,
    -> POSITION('e' in web_address) AS POSITION
    -> FROM 
    -> company_information
    -> WHERE
    -> LOCATE('深圳市羅湖區',registration_address) > 0;
+------------+----------------------+-----------------------+----------+
| company_id | company_abbreviation | web_address           | POSITION |
+------------+----------------------+-----------------------+----------+
| 000001     | 平安銀行             | www.bank.pingan.com   |        0 |
| 000006     | 深振業A             | www.zhenye.com        |        7 |
| 000040     | 東旭藍天             | www.bahjdc.com        |        0 |
| 000048     | 康達爾               | www.kondarl.com       |        0 |
| 000061     | 農產品               | www.szap.com          |        0 |
| 000099     | 中信海直             | www.cohc.citic        |        0 |
| 002285     | 世聯行               | www.worldunion.com.cn |        0 |
| 002325     | 洪濤股份             | www.szhongtao.cn      |        0 |
| 002482     | 廣田集團             | www.szgt.com          |        0 |
| 002620     | 瑞和股份             | www.sz-ruihe.com      |       12 |
| 002736     | 國信證券             | www.guosen.com.cn     |        9 |
| 002740     | 愛迪爾               | www.idr.com.cn        |        0 |
| 002822     | 中裝建設             | www.zhongzhuang.com   |        0 |
| 002830     | 名雕股份             | www.mingdiao.com.cn   |        0 |
| 300532     | 今天國際             | www.nti56.com         |        0 |
| 600892     | 大晟文化             | www.baochengshare.com |       10 |
+------------+----------------------+-----------------------+----------+
16 rows in set (0.00 sec)

14、REPEAT() 函式

REPEAT() 函式生成一個由某字串重復 n 次組成的字串,語法格式如下:

REPEAT(str,n);

--說明:生成一個由 n 個 str 連接而成的字串,

舉例:

mysql> SELECT 
    -> company_id,
    -> company_abbreviation,
    -> CONCAT(company_abbreviation,REPEAT('=',3),web_address) AS repeat_string
    -> FROM 
    -> company_information
    -> WHERE
    -> company_id < '000010';
+------------+----------------------+----------------------------------------+
| company_id | company_abbreviation | repeat_string                          |
+------------+----------------------+----------------------------------------+
| 000001     | 平安銀行             | 平安銀行===www.bank.pingan.com         |
| 000002     | 萬科A               | 萬科A===www.vanke.com                 |
| 000004     | 國農科技             | 國農科技===www.sz000004.cn             |
| 000005     | 世紀星源             | 世紀星源===www.fountain.com.cn         |
| 000006     | 深振業A             | 深振業A===www.zhenye.com              |
| 000007     | 全新好               | 全新好===None                          |
| 000008     | 神州高鐵             | 神州高鐵===www.shenzhou-gaotie.com     |
| 000009     | 中國寶安             | 中國寶安===www.chinabaoan.com          |
+------------+----------------------+----------------------------------------+
8 rows in set (0.00 sec)

15、LPAD() 與 RPAD() 函式

LPAD() 與 RPAD() 函式分別在一個字串的前端或后端填充若干個字符,使字串達到指定的長度,語法格式如下:

LPAD(str,len,padstr);
RPAD(str,len,padstr);

--說明:1)把字串 str 用 padstr 字串填充到長度為 len,并回傳長度為 len 的字串,
(2)LPAD 函式 str 字串右對齊,padstr 從左邊填充,
(3)RPAD 函式 str 字串左對齊,padstr 從右端填充,

舉例:

mysql> SELECT
    -> company_id,
    -> web_address,
    -> CONCAT(RPAD(company_abbreviation,6,'='),web_address) AS rpad
    -> FROM 
    -> company_information
    -> WHERE
    -> company_id < '000010';
+------------+-------------------------+---------------------------------------+
| company_id | web_address             | rpad                                  |
+------------+-------------------------+---------------------------------------+
| 000001     | www.bank.pingan.com     | 平安銀行==www.bank.pingan.com         |
| 000002     | www.vanke.com           | 萬科A===www.vanke.com                |
| 000004     | www.sz000004.cn         | 國農科技==www.sz000004.cn             |
| 000005     | www.fountain.com.cn     | 世紀星源==www.fountain.com.cn         |
| 000006     | www.zhenye.com          | 深振業A==www.zhenye.com              |
| 000007     | None                    | 全新好===None                         |
| 000008     | www.shenzhou-gaotie.com | 神州高鐵==www.shenzhou-gaotie.com     |
| 000009     | www.chinabaoan.com      | 中國寶安==www.chinabaoan.com          |
+------------+-------------------------+---------------------------------------+
8 rows in set (0.00 sec)

mysql> SELECT
    -> company_id,
    -> web_address,
    -> CONCAT(RPAD(web_address,30,'*'),company_abbreviation) AS rpad
    -> FROM 
    -> company_information
    -> WHERE
    -> company_id < '000010';
+------------+-------------------------+--------------------------------------------+
| company_id | web_address             | rpad                                       |
+------------+-------------------------+--------------------------------------------+
| 000001     | www.bank.pingan.com     | www.bank.pingan.com***********平安銀行     |
| 000002     | www.vanke.com           | www.vanke.com*****************萬科A       |
| 000004     | www.sz000004.cn         | www.sz000004.cn***************國農科技     |
| 000005     | www.fountain.com.cn     | www.fountain.com.cn***********世紀星源     |
| 000006     | www.zhenye.com          | www.zhenye.com****************深振業A     |
| 000007     | None                    | None**************************全新好       |
| 000008     | www.shenzhou-gaotie.com | www.shenzhou-gaotie.com*******神州高鐵     |
| 000009     | www.chinabaoan.com      | www.chinabaoan.com************中國寶安     |
+------------+-------------------------+--------------------------------------------+
8 rows in set (0.00 sec)

16、SPACE() 函式

SPACE() 函式生成由若干個空格構成的字串,語法格式如下:

SPACE(n);

--說明:
回傳由 n 個空格構成的字串,

17、SUBSTRING_INDEX() 函式

SUBSTRING_INDEX() 函式的語法格式如下:

SUBSTRING_INDEX(str,delimiter,n);

--說明:1)如果 n 大于 0,回傳從左邊數第 n 個 delimiter 所表示字符的左邊的所有內容,
(2)如果 n 小于 0,回傳從右邊數第 n 個 delimiter 所表示字符的右邊的所有內容,

舉例:

mysql> SELECT
    -> company_id,
    -> company_abbreviation,
    -> web_address,
    -> SUBSTRING_INDEX(web_address,'.',-1) AS SUBSTRING_INDEX
    -> FROM 
    -> company_information
    -> WHERE
    -> company_id < '000010';
+------------+----------------------+-------------------------+-----------------+
| company_id | company_abbreviation | web_address             | SUBSTRING_INDEX |
+------------+----------------------+-------------------------+-----------------+
| 000001     | 平安銀行             | www.bank.pingan.com     | com             |
| 000002     | 萬科A               | www.vanke.com           | com             |
| 000004     | 國農科技             | www.sz000004.cn         | cn              |
| 000005     | 世紀星源             | www.fountain.com.cn     | cn              |
| 000006     | 深振業A             | www.zhenye.com          | com             |
| 000007     | 全新好               | None                    | None            |
| 000008     | 神州高鐵             | www.shenzhou-gaotie.com | com             |
| 000009     | 中國寶安             | www.chinabaoan.com      | com             |
+------------+----------------------+-------------------------+-----------------+
8 rows in set (0.03 sec)

mysql> SELECT
    -> company_id,
    -> company_abbreviation,
    -> web_address,
    -> SUBSTRING_INDEX(web_address,'.',1) AS SUBSTRING_INDEX
    -> FROM 
    -> company_information
    -> WHERE
    -> company_id < '000010';
+------------+----------------------+-------------------------+-----------------+
| company_id | company_abbreviation | web_address             | SUBSTRING_INDEX |
+------------+----------------------+-------------------------+-----------------+
| 000001     | 平安銀行             | www.bank.pingan.com     | www             |
| 000002     | 萬科A               | www.vanke.com           | www             |
| 000004     | 國農科技             | www.sz000004.cn         | www             |
| 000005     | 世紀星源             | www.fountain.com.cn     | www             |
| 000006     | 深振業A             | www.zhenye.com          | www             |
| 000007     | 全新好               | None                    | None            |
| 000008     | 神州高鐵             | www.shenzhou-gaotie.com | www             |
| 000009     | 中國寶安             | www.chinabaoan.com      | www             |
+------------+----------------------+-------------------------+-----------------+
8 rows in set (0.01 sec)

18、REVERSE() 函式

REVERSE() 函式對一個字串中的內容進行翻轉,語法格式如下:

REVERSE(str);

--說明:
回傳str的翻轉字串,

舉例:

mysql> SELECT
    -> company_id,
    -> company_abbreviation,
    -> web_address,
    -> REVERSE(web_address) AS REVERSE
    -> FROM 
    -> company_information
    -> WHERE
    -> company_id < '000010';
+------------+----------------------+-------------------------+-------------------------+
| company_id | company_abbreviation | web_address             | REVERSE                 |
+------------+----------------------+-------------------------+-------------------------+
| 000001     | 平安銀行             | www.bank.pingan.com     | moc.nagnip.knab.www     |
| 000002     | 萬科A               | www.vanke.com           | moc.eknav.www           |
| 000004     | 國農科技             | www.sz000004.cn         | nc.400000zs.www         |
| 000005     | 世紀星源             | www.fountain.com.cn     | nc.moc.niatnuof.www     |
| 000006     | 深振業A             | www.zhenye.com          | moc.eynehz.www          |
| 000007     | 全新好               | None                    | enoN                    |
| 000008     | 神州高鐵             | www.shenzhou-gaotie.com | moc.eitoag-uohznehs.www |
| 000009     | 中國寶安             | www.chinabaoan.com      | moc.naoabanihc.www      |
+------------+----------------------+-------------------------+-------------------------+
8 rows in set (0.00 sec)

CREATE INDEX idx_web_address 


ALTER TABLE company_information
ADD INDEX idx_web_address (REVERSE(web_address));

SELECT
company_id,
company_abbreviation,
web_address,
REVERSE(web_address) AS REVERSE
FROM 
company_information
WHERE
company_id < '000010';

為 company_information 表創建一個計算列,該列的內容為 web_address 欄位內容的翻轉,然后為虛擬列創建索引,

-- 創建計算列
mysql> ALTER TABLE company_information
    -> ADD reverse_web varchar(50) AS (REVERSE(web_address));
Query OK, 0 rows affected (0.34 sec)
Records: 0  Duplicates: 0  Warnings: 0
-- 根據計算列創建索引
mysql> CREATE INDEX idx_reverse_web 
    -> ON company_information(reverse_web);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> SHOW CREATE TABLE company_information\G
*************************** 1. row ***************************
       Table: company_information
Create Table: CREATE TABLE `company_information` (
  `company_id` char(6) NOT NULL,
  `company_abbreviation` char(20) DEFAULT NULL,
  `company_fullname` char(100) DEFAULT NULL,
  `English_name` char(200) DEFAULT NULL,
  `registration_address` char(200) DEFAULT NULL,
  `web_address` char(200) DEFAULT NULL,
  `reverse_web` varchar(50) GENERATED ALWAYS AS (reverse(`web_address`)) VIRTUAL,
  PRIMARY KEY (`company_id`),
  KEY `idx_reverse_web` (`reverse_web`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
1 row in set (0.00 sec)

mysql> explain 
    -> SELECT
    -> *
    -> FROM 
    -> company_information
    -> WHERE reverse_web = REVERSE('www.wanke.com')\G
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: company_information
   partitions: NULL
         type: ref
possible_keys: idx_reverse_web
          key: idx_reverse_web
      key_len: 153
          ref: const
         rows: 1
     filtered: 100.00
        Extra: NULL
1 row in set, 1 warning (0.00 sec)

19、STRCMP() 函式

STRCMP() 函式用于比較兩個字串的大小,語法如下:

STRCMP(str1,str2);

說明:
(1)根據比較規則,如果字串 str1 大于 str2,回傳 1,
(2)如果字串 str1 小于 str2,回傳 -1,
(3)如果字串 str1 和 str2 完全相同,則回傳 0

轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/200799.html

標籤:其他

上一篇:Centaur: A Framework for Hybrid CPU-FPGA Databases

下一篇:利用 PostgreSQL 部分索引提高查詢陳述句的性能

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • GPU虛擬機創建時間深度優化

    **?桔妹導讀:**GPU虛擬機實體創建速度慢是公有云面臨的普遍問題,由于通常情況下創建虛擬機屬于低頻操作而未引起業界的重視,實際生產中還是存在對GPU實體創建時間有苛刻要求的業務場景。本文將介紹滴滴云在解決該問題時的思路、方法、并展示最終的優化成果。 從公有云服務商那里購買過虛擬主機的資深用戶,一 ......

    uj5u.com 2020-09-10 06:09:13 more
  • 可編程網卡芯片在滴滴云網路的應用實踐

    **?桔妹導讀:**隨著云規模不斷擴大以及業務層面對延遲、帶寬的要求越來越高,采用DPDK 加速網路報文處理的方式在橫向縱向擴展都出現了局限性。可編程芯片成為業界熱點。本文主要講述了可編程網卡芯片在滴滴云網路中的應用實踐,遇到的問題、帶來的收益以及開源社區貢獻。 #1. 資料中心面臨的問題 隨著滴滴 ......

    uj5u.com 2020-09-10 06:10:21 more
  • 滴滴資料通道服務演進之路

    **?桔妹導讀:**滴滴資料通道引擎承載著全公司的資料同步,為下游實時和離線場景提供了必不可少的源資料。隨著任務量的不斷增加,資料通道的整體架構也隨之發生改變。本文介紹了滴滴資料通道的發展歷程,遇到的問題以及今后的規劃。 #1. 背景 資料,對于任何一家互聯網公司來說都是非常重要的資產,公司的大資料 ......

    uj5u.com 2020-09-10 06:11:05 more
  • 滴滴AI Labs斬獲國際機器翻譯大賽中譯英方向世界第三

    **桔妹導讀:**深耕人工智能領域,致力于探索AI讓出行更美好的滴滴AI Labs再次斬獲國際大獎,這次獲獎的專案是什么呢?一起來看看詳細報道吧! 近日,由國際計算語言學協會ACL(The Association for Computational Linguistics)舉辦的世界最具影響力的機器 ......

    uj5u.com 2020-09-10 06:11:29 more
  • MPP (Massively Parallel Processing)大規模并行處理

    1、什么是mpp? MPP (Massively Parallel Processing),即大規模并行處理,在資料庫非共享集群中,每個節點都有獨立的磁盤存盤系統和記憶體系統,業務資料根據資料庫模型和應用特點劃分到各個節點上,每臺資料節點通過專用網路或者商業通用網路互相連接,彼此協同計算,作為整體提供 ......

    uj5u.com 2020-09-10 06:11:41 more
  • 滴滴資料倉庫指標體系建設實踐

    **桔妹導讀:**指標體系是什么?如何使用OSM模型和AARRR模型搭建指標體系?如何統一流程、規范化、工具化管理指標體系?本文會對建設的方法論結合滴滴資料指標體系建設實踐進行解答分析。 #1. 什么是指標體系 ##1.1 指標體系定義 指標體系是將零散單點的具有相互聯系的指標,系統化的組織起來,通 ......

    uj5u.com 2020-09-10 06:12:52 more
  • 單表千萬行資料庫 LIKE 搜索優化手記

    我們經常在資料庫中使用 LIKE 運算子來完成對資料的模糊搜索,LIKE 運算子用于在 WHERE 子句中搜索列中的指定模式。 如果需要查找客戶表中所有姓氏是“張”的資料,可以使用下面的 SQL 陳述句: SELECT * FROM Customer WHERE Name LIKE '張%' 如果需要 ......

    uj5u.com 2020-09-10 06:13:25 more
  • 滴滴Ceph分布式存盤系統優化之鎖優化

    **桔妹導讀:**Ceph是國際知名的開源分布式存盤系統,在工業界和學術界都有著重要的影響。Ceph的架構和演算法設計發表在國際系統領域頂級會議OSDI、SOSP、SC等上。Ceph社區得到Red Hat、SUSE、Intel等大公司的大力支持。Ceph是國際云計算領域應用最廣泛的開源分布式存盤系統, ......

    uj5u.com 2020-09-10 06:14:51 more
  • es~通過ElasticsearchTemplate進行聚合~嵌套聚合

    之前寫過《es~通過ElasticsearchTemplate進行聚合操作》的文章,這一次主要寫一個嵌套的聚合,例如先對sex集合,再對desc聚合,最后再對age求和,共三層嵌套。 Aggregations的部分特性類似于SQL語言中的group by,avg,sum等函式,Aggregation ......

    uj5u.com 2020-09-10 06:14:59 more
  • 爬蟲日志監控 -- Elastc Stack(ELK)部署

    傻瓜式部署,只需替換IP與用戶 導讀: 現ELK四大組件分別為:Elasticsearch(核心)、logstash(處理)、filebeat(采集)、kibana(可視化) 下載均在https://www.elastic.co/cn/downloads/下tar包,各組件版本最好一致,配合fdm會 ......

    uj5u.com 2020-09-10 06:15:05 more
最新发布
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:33:24 more
  • MySQL中binlog備份腳本分享

    關于MySQL的二進制日志(binlog),我們都知道二進制日志(binlog)非常重要,尤其當你需要point to point災難恢復的時侯,所以我們要對其進行備份。關于二進制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠程服務器或本地服務器 ......

    uj5u.com 2023-04-20 08:28:06 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:27:27 more
  • 快取與資料庫雙寫一致性幾種策略分析

    本文將對幾種快取與資料庫保證資料一致性的使用方式進行分析。為保證高并發性能,以下分析場景不考慮執行的原子性及加鎖等強一致性要求的場景,僅追求最終一致性。 ......

    uj5u.com 2023-04-20 08:26:48 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:26:35 more
  • 云時代,MySQL到ClickHouse資料同步產品對比推薦

    ClickHouse 在執行分析查詢時的速度優勢很好的彌補了MySQL的不足,但是對于很多開發者和DBA來說,如何將MySQL穩定、高效、簡單的同步到 ClickHouse 卻很困難。本文對比了 NineData、MaterializeMySQL(ClickHouse自帶)、Bifrost 三款產品... ......

    uj5u.com 2023-04-20 08:26:29 more
  • sql陳述句優化

    問題查找及措施 問題查找 需要找到具體的代碼,對其進行一對一優化,而非一直把關注點放在服務器和sql平臺 降低簡化每個事務中處理的問題,盡量不要讓一個事務拖太長的時間 例如檔案上傳時,應將檔案上傳這一步放在事務外面 微軟建議 4.啟動sql定時執行計劃 怎么啟動sqlserver代理服務-百度經驗 ......

    uj5u.com 2023-04-20 08:25:13 more
  • Redis 報”OutOfDirectMemoryError“(堆外記憶體溢位)

    Redis 報錯“OutOfDirectMemoryError(堆外記憶體溢位) ”問題如下: 一、報錯資訊: 使用 Redis 的業務介面 ,產生 OutOfDirectMemoryError(堆外記憶體溢位),如圖: 格式化后的報錯資訊: { "timestamp": "2023-04-17 22: ......

    uj5u.com 2023-04-20 08:24:54 more
  • day02-2-商鋪查詢快取

    功能02-商鋪查詢快取 3.商鋪詳情快取查詢 3.1什么是快取? 快取就是資料交換的緩沖區(稱作Cache),是存盤資料的臨時地方,一般讀寫性能較高。 快取的作用: 降低后端負載 提高讀寫效率,降低回應時間 快取的成本: 資料一致性成本 代碼維護成本 運維成本 3.2需求說明 如下,當我們點擊商店詳 ......

    uj5u.com 2023-04-20 08:24:03 more
  • day02-短信登錄

    功能實作02 2.功能01-短信登錄 2.1基于Session實作登錄 2.1.1思路分析 2.1.2代碼實作 2.1.2.1發送短信驗證碼 發送短信驗證碼: 發送驗證碼的介面為:http://127.0.0.1:8080/api/user/code?phone=xxxxx<手機號> 請求方式:PO ......

    uj5u.com 2023-04-20 08:23:11 more