SQL STRING_SPLIT() 函数

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() 函数将字符串 (’欢迎来到教程点家族’) 的内容转换为列。

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表中,如下所示: records

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      |
+----+------------+-----------+-----+-----------+---------+-------+----------+

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程