SQL Server Substring()函數

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