一、SUBSTRING的概述
SQL中的SUBSTRING函數可以在查詢字元和文本欄位時對它們進行分析並返回指定位置的子字元串。
SUBSTRING函數的語法如下:
SELECT SUBSTRING(column_name, start_position, length)
FROM table_name;
參數說明:
- column_name:要查詢的列名。
- start_position:要查詢的字元串的起始位置。位置從1開始計算。
- length:要查詢的字元串的長度。可選參數。如果未指定這個參數,該函數將返回從起始位置到字元串結尾的所有字元。
二、SUBSTRING的使用方法
下面通過一個簡單的例子來說明如何在SQL查詢中使用SUBSTRING函數。
我們有一張名為「Employees」的員工表,其中有一個名為「Name」的列,該列中包含員工的全名。
+----+------------+
| ID | Name |
+----+------------+
| 1 | John Smith |
| 2 | Jane Doe |
| 3 | Bob Jones |
+----+------------+
我們想要在查詢中僅返回每個員工的名字(即第一個空格前的所有字元),我們可以使用以下語句:
SELECT SUBSTRING(Name, 1, CHARINDEX(' ', Name) - 1)
FROM Employees;
該語句將返回以下結果:
+---------------------+
| (No column name) |
+---------------------+
| John |
| Jane |
| Bob |
+---------------------+
在這個例子中,我們使用了SUBSTRING函數和CHARINDEX函數來獲取每個員工員工名字的子串。
SUBSTRING函數使用Name列,選擇從第一個字元開始的子字元串,長度為第一個空格的位置減一。
CHARINDEX函數用於獲取第一個空格的位置。SUBSTRING中的start_position參數設置為1,表示從Name的第一個字母開始。LENGTH參數是第一個空格的位置減去1(因為我們只想返回員工的名字,所以我們不需要包括空格)。
三、SUBSTRING函數應用場景
SUBSTRING函數有許多實際應用場景,下面介紹兩個常見的用法。
1、提取某種格式的值
SUBSTRING函數可用於提取特定格式的值。
舉個例子,假設我們有一個由數字和字母組成的字元串,格式如下:
AAA-###-####
其中AAA表示三個字母,###表示三個數字,####表示四個數字。
我們希望從中提取數字部分以便後續計算,可以使用SUBSTRING函數。
SELECT SUBSTRING('ABC-123-4567', 5, 3) AS Number_1,
SUBSTRING('ABC-123-4567', 9, 3) AS Number_2,
SUBSTRING('ABC-123-4567', 13, 4) AS Number_3;
運行結果如下:
+----------+----------+----------+
| Number_1 | Number_2 | Number_3 |
+----------+----------+----------+
| 123 | 456 | 4567 |
+----------+----------+----------
在這個例子中,我們提取了每個數欄位並給每個數字列起了名字。這將使後續查詢更加便捷。
2、將字元串拆分成多個部分
有時,我們需要將一個字元串拆分成多個部分,以此來進行進一步的處理。
假設我們有一個由逗號分隔的字元串,其中包含一些標籤:
technology, SQL, databases, programming
我們希望從中提取出每個標籤,並將其列為單獨的行,以便對這些標籤進行計數和分析。可以使用SUBSTRING函數來實現:
DECLARE @tags AS VARCHAR(100) = 'technology, SQL, databases, programming'
SELECT SUBSTRING(@tags, 1, CHARINDEX(',', @tags) - 1) AS Tag_1,
SUBSTRING(@tags, CHARINDEX(',', @tags) + 2, CHARINDEX(',', @tags, CHARINDEX(',', @tags) + 1) - CHARINDEX(',', @tags) - 2) AS Tag_2,
SUBSTRING(@tags, CHARINDEX(',', @tags, CHARINDEX(',', @tags) + 1) + 2, CHARINDEX(',', @tags, CHARINDEX(',', @tags, CHARINDEX(',', @tags) + 1) + 1) - CHARINDEX(',', @tags, CHARINDEX(',', @tags) + 1) - 2) AS Tag_3,
SUBSTRING(@tags, CHARINDEX(',', @tags, CHARINDEX(',', @tags, CHARINDEX(',', @tags) + 1) + 1) + 2, LEN(@tags) - CHARINDEX(',', @tags, CHARINDEX(',', @tags, CHARINDEX(',', @tags, CHARINDEX(',', @tags) + 1) + 1) + 1) + 1) AS Tag_4;
運行結果如下:
+-------------+-------+-----------+--------------+
| Tag_1 | Tag_2 | Tag_3 | Tag_4 |
+-------------+-------+-----------+--------------+
| technology | SQL | databases | programming |
+-------------+-------+-----------+--------------+
如果字元串中有更多標籤,我們可以使用類似的方法來提取它們。
四、小結
本文探討了SUBSTRING函數的概述、使用方法、應用場景等內容,希望讀者能夠對SUBSTRING函數有更加深入的理解,並能在實際應用中靈活地使用它。
原創文章,作者:WBYCU,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/370313.html