摘要:在本教程中,您將學習如何使用 SQL SUBSTRING 函式從字串中提取子字串。
SQL SUBSTRING 函式簡介 #
SUBSTRING 函式用於提取從指定位置開始且具有給定長度的子字串。
以下是 SUBSTRING 函式的語法
SUBSTRING(string, position, length)Code language: SQL (Structured Query Language) (sql)SUBSTRING 函式接受三個引數
string是您要從中提取子字串的源字串。position是子字串開始的起始位置。字串的第一個位置是 1。length是子字串的長度。
SUBSTRING() 函式返回一個子字串。如果任何引數(string、position 和 length)為 NULL,它將返回 NULL。
基本的 SQL SUBSTRING 函式示例 #
以下示例使用 substring 函式返回一個從位置 1 開始,長度為 3 的子字串
SELECT
SUBSTRING('SQLTutorial.org', 1, 3) result;Code language: SQL (Structured Query Language) (sql)輸出
result
--------
SQLCode language: SQL (Structured Query Language) (sql)以下語句使用 SUBSTRING() 函式返回一個從位置 4 開始,長度為 8 的子字串
SELECT
SUBSTRING('SQLTutorial.org', 4, 8) result;Code language: SQL (Structured Query Language) (sql)輸出
substring
-----------
Tutorial
(1 row)
Code language: SQL (Structured Query Language) (sql)以下語句使用 SUBSTRING() 函式和 POSITION 函式來返回域名 sqlutorial.org 的副檔名
SELECT
SUBSTRING(
'SQLTutorial.org',
POSITION('.' IN 'SQLTutorial.org'),
4
) extension;Code language: SQL (Structured Query Language) (sql)輸出
extension
-----------
.orgCode language: SQL (Structured Query Language) (sql)查詢工作原理
- 首先,使用
POSITION()函式找到點字元(.)的位置。 - 其次,透過從點字元(
.)的位置提取到域名末尾的子字串來檢索副檔名。
對錶資料使用 SQL SUBSTRING 函式 #
我們將使用示例資料庫中的 employees 表。

以下查詢使用 SUBSTRING 函式提取每位員工名字的第一個字元(首字母)
SELECT
first_name,
substring(first_name, 1, 1) initial
FROM
employees
ORDER BY
first_name;輸出
first_name | initial
-------------+---------
Adam | A
Alexander | A
Alexander | A
Britney | B
Bruce | B
Charles | C將 SUBSTRING 函式與聚合函式結合使用 #
以下示例使用 SUBSTRING 函式和 COUNT 函式按首字母統計員工數量
SELECT
SUBSTRING(first_name, 1, 1) initial,
COUNT(employee_id)
FROM
employees
GROUP BY
initial
ORDER BY
initial;Code language: SQL (Structured Query Language) (sql)輸出
initial | count
---------+-------
A | 3
B | 2
C | 1
D | 4
G | 1
H | 1
I | 2
...摘要 #
- 使用 SQL
SUBSTRING()函式從字串中提取子字串。
資料庫 #
- PostgreSQL SUBSTRING 函式
- MySQL SUBSTRING 函式
- SQLite SUBSTR 函式
- Db2 SUBSTRING 函式
- Oracle SUBSTR 函式
- SQL Server SUBSTRING 函式
本教程是否有幫助?