在本教學中,將學習如何使用SQL Server SUBSTRING()函數從字串中提取子字串。
SQL Server SUBSTRING()函數簡介
SUBSTRING()從輸入字串中的位置開始提取具有指定長度的子字串。
以下是SUBSTRING()函數的語法:
SUBSTRING(input_string, start, length);
在這個語法中:
input_string可以是字元,二進位,文本,ntext或圖像運算式。start是一個整數,指定返回的子字串的起始位置。 請注意,input_string中的第一個字元是1,而不是0。length是一個正整數,指定要返回的子字串的字元數。 如果長度為負,則SUBSTRING()函數會引發錯誤。 如果start + length> input_string的長度,子字串將從開始處開始並包含input_string的其餘字元。
SQL Server SUBSTRING()示例
下麵舉一些使用SUBSTRING()函數來瞭解它如何工作的例子。
1. SUBSTRING()函數使用帶文字字串
此示例在"SQL Server SUBSTRING"字串中從第五個字元開始提取長度為6的子字串。
SELECT
SUBSTRING('SQL Server SUBSTRING', 5, 6) result;
執行上面查詢語句,得到以下結果:
result
------
Server
(1 row affected)
2. 將SUBSTRING()函數與表列一起使用
下麵將使用示例資料庫中的sales.customers表進行演示。

此示例使用SUBSTRING()函數從客戶的電子郵件地址中提取域:
SELECT
email,
SUBSTRING(
email,
CHARINDEX('@', email)+1,
LEN(email)-CHARINDEX('@', email)
) domain
FROM
sales.customers
ORDER BY
email;
執行上面查詢語句,得到以下結果:

上面語句如怎麼運行?
首先,使用CHARINDEX()函數在電子郵件中搜索"@"字元。 功能變數名稱將從"@"字元加1開始。
然後,使用CHARINDEX()函數的結果來確定:
- 功能變數名稱的起始位置:
CHARINDEX('@', email) + 1 - 功能變數名稱的長度:
LEN(email)-CHARINDEX('@', email)
要計算每個域的電子郵件數,可以使用以下查詢:
SELECT
SUBSTRING(
email,
CHARINDEX('@', email)+1,
LEN(email)-CHARINDEX('@', email)
) domain,
COUNT(email) domain_count
FROM
sales.customers
GROUP BY
SUBSTRING(
email,
CHARINDEX('@', email)+1,
LEN(email)-CHARINDEX('@', email)
);
執行上面查詢語句,得到以下結果:

在本教學中,學習了如何使用SQL Server SUBSTRING()函數從字串中提取字元。
上一篇:
SQL Server字串函數
下一篇:
SQL Server Window函數
