函數-1-字符串函數
- 字符串函數
- 函數
- 語法
- 字符串函數的使用
- 字符串函數語法
- 案例演示
- 實戰練習
字符串函數
函數
函數是一段可以直接被另一端程序調用的程序或代碼
語法
SELECT 函數名(參數名)
大家可能會有那么一點點疑惑, 為什么執行函數還需要加上SELECT
語句? 總結一下, 因為SELECT
語句是MySQL
中執行函數并獲取結果的標準方式,它能夠方便地與其他SQL操作結合,并以簡潔的語法完成各種計算和數據處理任務。
字符串函數的使用
MySQL中內置了很多字符串函數, 常用的幾個如下:
函數 | 功能 |
---|---|
CONCAT(S1, S2, …, Sn) | 字符串拼接, 將 S1, S2, …, Sn 拼接成一個字符串 |
LOWER(str) | 將字符串 str 全部轉為小寫 |
UPPER(str) | 將字符串 str 全部轉為大寫 |
LPAD(str, n, pad) | 左填充, 用字符串 pad 對 str 的左邊進行填充, 達到 n 個字符串長度 |
RPAD(str, n, pad) | 右填充, 用字符串 pad 對 str 的右邊進行填充, 達到 n 個字符串長度 |
TRIM(str) | 去掉字符串頭部和尾部的空格 |
SUBSTRING(str, start, len) | 返回字符串 str 從 start 位置起的 len 個長度的字符串 |
字符串函數語法
-
CONCAT
函數SELECT CONCAT(參數)
-
LOWER
函數SELECT LOWER(參數)
-
UPPER
函數SELECT UPPER(參數)
-
LPAD
函數SELECT LPAD(參數)
-
RPAD 函數
SELECT RPAD(參數)
-
TRIM 函數
SELECT TRIM(參數)
案例演示
-
拼接
Hello
和World
兩個字符串select concat('Hello', 'World');
-
將
Hello, World
字符串所有字母轉換成小寫字母select lower('Hello, World');
-
將
Hello, World
字符串所有字母轉換成大寫字母select upper('Hello, World');
-
使用
@
符號對字符串Hello, World
進行左填充,使其總長度達到20
個字符select lpad('Hello, World', 20, '@');
-
使用
@
符號對字符串Hello, World
進行右填充,使其總長度達到20
個字符select rpad('Hello, World', 20, '@');
-
去除字符串
Hello, World
首尾的空格select trim(' Hello, World ');
-
從字符串
Hello, World
中提取子串,得到llo, Wor
select substring('Hello, World', 3, 8);
注意, 此處的起始索引是從
1
開始算的, 所以需要注意我們切片的時候的起始索引應該是3
, 而不是2
實戰練習
首先我們需要準備一下數據, 在 test
庫的 emp_info
中更新一下數據, 進行如下替換即可
INSERT INTO emp_info (id, work_no, name, gender, age, id_card, work_address, entry_time)
VALUES (1, '1', '張偉', '男', 28, '11010519950101234X', '北京市海淀區中關村科技園', '2020-03-15'),(2, '2', '李娜', '女', 32, '310115199209076542', '上海市浦東新區張江高科技園區', '2019-07-22'),(3, '3', '王超', '男', 25, '440305199801129876', '深圳市南山區高新科技園', '2021-11-05'),(4, '4', '趙敏', '女', 29, '510107199412258765', '成都市高新區天府軟件園', '2020-09-18'),(5, '5', '陳陽', '男', 35, '330106198911034567', '杭州市西湖區云棲小鎮', '2018-05-30'),(6, '6', '劉婷', '女', 27, '320506199612127890', '蘇州市工業園區人工智能產業園', '2022-02-14'),(7, '7', '楊帆', '男', 31, '420111199211156789', '武漢市東湖新技術開發區', '2019-10-21'),(8, '8', '周雨', '女', 26, '440111199712098765', '廣州市天河區智慧城', '2021-08-03'),(9, '9', '吳強', '男', 33, '500106198912312345', '重慶市渝北區仙桃數據谷', '2017-04-12'),(10, '10', '鄭琳', '女', 30, '610113199310214567', '西安市高新區軟件新城', '2020-01-25');
-
由于業務需求變更, 企業員工的工號, 統一為
5
位數, 目前不足5
位數的全部在前面補0
, 例如: 1 號員工的公號應該為00001
這題其實不是很復雜, 但咱可以稍微搞復雜一些, 順便回顧一下之前的知識點
首先查看一下建表語句, 獲取一下各字段信息
desc emp_info;
查看到表結構, 我們需要統一的企業員工的工號字段為
work_no
, 類型為varchar(10)
再查看一下表內容
select * from emp_info;
這里其實可以發現,
work_no
字段都不足5
位數, 但是字段類型卻為varchar(10)
, 所以我們可以嘗試修改以下表的結構, 將其統一為char(5)
, 當然只作練習使用, 不適用于生產環境, 生產環境還是得因地制宜, 按照企業的意思進行管理, 這里只做學習!!!修改
work_no
字段類型為char(5)
alter table emp_infomodify work_no char(5);
再次查看表結構以確認修改結果
使用左補全, 補全員工工號字段, 并且更新到表中, 這里其實大家就能明白, 使用函數不一定要帶有
SELECT
update emp_info set work_no=lpad(emp_info.work_no, 5, '0');