在本教學中,將學習如何使用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函數