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
广告