SQL - STRING_SPLIT() 函式



SQL 的STRING_SPLIT()函式用於將字串轉換為列。

它接受三個引數strseparatorenable_ordinal,並根據指定的分割符字元將字串拆分為子字串的行。如果未啟用序數輸出列,則STRING_SPLIT()函式返回一個單列表,其行是子字串。

該列的名稱將為VALUE。如果任何輸入引數為nvarchar或nchar,則返回nvarchar。否則,它返回varchar。返回型別的長度與字串引數的長度相同。

語法

以下是 SQL STRING_SPLIT()函式的語法:

STRING_SPLIT ( string , separator [ , enable_ordinal ] ) 

引數

  • str - 它是一個任何字元型別(如 nvarchar、varchar、nchar)的表示式。

  • separator - 它是一個任何字元型別的單字元表示式,用作連線子字串的分割符。

  • enable_ordinal - 它是一個 int 或 bit 表示式,用作啟用或停用序數輸出列的標誌。

以下是關於 enable_ordinal 引數的一些重要要點

  • 它是一個可選引數。

  • 如果 enable_ordinal 引數值為1,則啟用序數列。

  • 如果 enable_ordinal 值為NULL,則省略序數列。

  • 如果 enable_ordinal 值為0,則停用序數列。

示例

在以下示例中,我們使用 SQL STRING_SPLIT()函式將字串內容(‘Java’, ‘HTML’, ‘CSS’, ‘JavaScript’,’ Angular’)轉換為列。

SELECT VALUE FROM STRING_SPLIT('Java IS A PROGRAMMING LANGUAGE',' ');

輸出

以下是上述語句的輸出:

+--------------+
| VALUE        |  
+--------------+
| Java         |
| IS           |
| A            |
| PROGRAMMING  |
| LANGUAGE     | 
+--------------+

示例

如果我們將enable_ordinal引數值作為1傳遞給函式,它將啟用輸出列。

在以下示例中,我們使用STRING_SPLIT()函式將字串(‘Welcome to TutorialsPoint Family’)的內容轉換為列。

SELECT * FROM STRING_SPLIT('Welcome to TutorialsPoint Family', ' ', 1);

輸出

執行上述程式後,將生成以下輸出:

+-----------------+---------+
| VALUE           | ordinal |
+-----------------+---------+
| Welcome         |   1     |
| to              |   2     |
| TutorialsPoint  |   3     |
| Family          |   4     | 
+-----------------+---------+

示例

如果將enable_ordinal引數值作為0傳遞給函式,它將停用輸出列。

在以下示例中,我們將enable_ordinal引數值作為 0 傳遞給STRING_SPLIT()函式。然後,使用此函式,我們嘗試將字串(‘Hello World’)的內容轉換為列。

SELECT * FROM STRING_SPLIT('Hello World',' ', 0);

輸出

上述程式生成以下輸出:

+----------+
| VALUE    |  
+----------+
| Hello    |
| World    |
+----------+

示例

如果我們將enable_ordinal引數值作為NULL傳遞給函式,則此函式將省略輸出列

在以下示例中,我們將 enable_ordinal 引數值作為 NULL 傳遞給STRING_SPLIT()函式。然後,使用此函式,我們嘗試將字串內容('Java IS A PROGRAMMING LANGUAGE',' ', NULL)轉換為列。

SELECT VALUE FROM STRING_SPLIT('Java IS A PROGRAMMING LANGUAGE',' ', NULL);

輸出

以下是上述 SQL 查詢的輸出:

+--------------+
| VALUE        |  
+--------------+
| Java         |
| IS           |
| A            |
| PROGRAMMING  |
| LANGUAGE     | 
+--------------+

示例

您還可以將表列作為引數傳遞給STRING_SPLIT()函式,以透過值列表查詢行。假設我們使用以下CREATE語句建立了一個名為Customers的表:

CREATE TABLE CUSTOMERS(    
ID INT NOT NULL,    
FIRST_NAME VARCHAR (20),
LAST_NAME VARCHAR(20),
AGE INT NOT NULL,    
ADDRESS CHAR (25) ,    
SALARY DECIMAL (18, 2));

現在讓我們使用以下INSERT語句將四個記錄插入到 Customers 表中:

INSERT INTO CUSTOMERS VALUES (2, 'Ramesh','KUMAR', 32, 'Ahmedabad', 2000.00 ); 
INSERT INTO CUSTOMERS VALUES (3, 'Khilan','Verma', 25, 'Delhi', 1500.00 ); 
INSERT INTO CUSTOMERS VALUES (3, 'kaushik','Gupta', 23, 'Kota', 2000.00 ); 
INSERT INTO CUSTOMERS VALUES (5, 'Chaitali','Pal', 25, 'Mumbai', 6500.00 );

以下 SQL 查詢透過 Customers 表的值列表檢索行:

SELECT * FROM CUSTOMERS JOIN STRING_SPLIT('3',' ', 1) on value = ID;

輸出

以下是上述查詢的輸出:

+----+------------+-----------+-----+-----------+---------+-------+----------+
| ID | FIRST_NAME | LAST_NAME | AGE | ADDRESS   | SALARY  | value | ordinal  |
+----+------------+-----------+-----+-----------+---------+-------+----------+
|  3 | Khilan     | Verma     |  25 | Delhi     | 1500.00 |  3    |   1      |
|  3 | kaushik    | Gupta     |  23 | Kota      | 2000.00 |  3    |   1      |
+----+------------+-----------+-----+-----------+---------+-------+----------+
sql-string-functions.htm
廣告