40 SQL 字串函式
阿新 • • 發佈:2020-06-25
1. 前言
解釋:SQL 內建的字串函式主要用於對
字元型別
的欄位進行相關的操作。
本小節,我們將一起學習 SQL 中的字串函式
。
字元型別是一個十分重要的型別,因此 SQL 提供了諸多便利的內建函式來供開發者使用。
本小節測試資料如下,請先在資料庫中執行:
DROP TABLE IF EXISTS imooc_user;
CREATE TABLE imooc_user
(
id int PRIMARY KEY,
username varchar(20),
age int
);
INSERT INTO imooc_user(id,username,age)
VALUES (1,'peter' ,18),(2,'pedro',24),(3,'jerry',22);
2. 實踐
在 SQL 中,常見的字串函式有如下幾個:
函式名 | 作用 |
---|---|
CONCAT | 拼接多個字串 |
LENGTH | 得到字元長度,一箇中文漢字算3個字元,數字和字母算1個字元 |
CHAR_LENGTH | 得到字元長度,中文漢字、數字和字母算1個字元 |
LOWER | 將英文字串全部轉為小寫 |
UPPER | 將英文字串全部轉為大寫 |
REPLACE | 替換字串,接受3個引數,分別是原字串,被替代字串,替代字串 |
SUBSTRING | 擷取字串,接受3個引數,分別是原字串,開始擷取的位置,擷取的長度 |
2.1 例1 拼接使用者名稱和年齡
通過CONCAT
,我們可以把 imooc_user 中的使用者名稱和年齡拼起來當作簡略的使用者資訊:
SELECT CONCAT(username,age) FROM imooc_user;
結果:
+----------------------+
| CONCAT(username,age) |
+----------------------+
| peter18 |
| pedro24 |
| jerry22 |
+----------------------+
2.2 例2 獲得使用者名稱長度
有時候,我們想要知道使用者名稱的長度:
SELECT LENGTH(username) FROM imooc_user WHERE id=1;
+------------------+
| LENGTH(username) |
+------------------+
| 5 |
+------------------+
如果,使用者名稱含有中文,或者全是中文,那麼我們就必須用CHAR_LENGTH
:
SELECT CHAR_LENGTH(username) FROM imooc_user WHERE id=1;
+-----------------------+
| CHAR_LENGTH(username) |
+-----------------------+
| 5 |
+-----------------------+
2.3 例3 使用者名稱大小寫
我們想要得到全大寫的使用者名稱:
SELECT UPPER(username) FROM imooc_user;
+-----------------+
| UPPER(username) |
+-----------------+
| PETER |
| PEDRO |
| JERRY |
+-----------------+
當然也可以全小寫,雖然現在已經是小寫了:
SELECT LOWER(username) FROM imooc_user;
+-----------------+
| LOWER(username) |
+-----------------+
| peter |
| pedro |
| jerry |
+-----------------+
2.4 例4 替換使用者名稱
通過REPLACE
我們可以替換使用者名稱中的pe
為we
。
SELECT REPLACE(username,'pe','we') FROM imooc_user;
+-----------------------------+
| REPLACE(username,'pe','we') |
+-----------------------------+
| weter |
| wedro |
| jerry |
+-----------------------------+
2.5 例5 擷取使用者名稱
使用SUBSTRING
,我們可以獲得使用者名稱的前 3 個字元當作簡稱。
SELECT SUBSTRING(username, 1, 3) FROM imooc_user;
+---------------------------+
| SUBSTRING(username, 1, 3) |
+---------------------------+
| pet |
| ped |
| jer |
+---------------------------+
3. 個人經驗
- LOWER 和 UPPER 函式在特定的場景是很有用的,如取標題。
- SUBSTRING 函式在不同的資料庫中的實現是不一樣的,不推薦在 SQL 裡面實用,遷移性很差。