SQL - STUFF() 函数



SQL 的STUFF()函数用于将一个字符串插入到另一个字符串中。

它接受四个参数char_expstartlengthreplace_with_exp,删除第一个字符串中从起始位置开始的指定长度的字符,然后将第二个字符串插入到第一个字符串的起始位置。

  • 如果start参数值为负数、零或长于第一个表达式,则返回字符串。

  • 如果length参数值为负数,则返回字符串;如果长度长于第一个表达式,则删除到第二个表达式中的最后一个字符。

  • 如果length,则在起始位置插入,并且不从第一个表达式中删除任何字符。

语法

以下是 SQL STUFF()函数的语法:

STUFF ( character_expression , start , length , replace_with_expression )

参数

  • character_expression - 它是字符数据的表达式(第一个字符串)。

  • start - 它是指定开始删除和插入位置的整数值。

  • length - 它是指定要删除的字符个数的整数值。

  • replace_with_expression - 它是字符数据的表达式(第二个字符串)。

返回值

此函数通过在指定删除位置插入第二个表达式来返回一个新字符串。

示例

在下面的示例中,我们使用 SQL STUFF()函数将字符串“world”插入到第一个字符串“hello”中,起始位置为2,长度为3

SELECT STUFF('hello', 2, 3, 'world') AS NEW_STR;

输出

上述 SQL 查询生成以下输出:

+----------+
| NEW_STR  |
+----------+
| hworldo  |
+----------+

示例

如果将NULL 或 0(零)作为start参数值传递给函数,则它将返回NULL字符串。

在此示例中,我们使用STUFF()函数将第二个字符串“defgh”插入到第一个字符串“abc”中,起始位置为NULL 或 0,长度为2

SELECT STUFF('abc', NULL, 2, 'defgh') AS NEW_STR;
SELECT STUFF('abc', 0, 2, 'defgh') AS NEW_STR;

输出

以下是上述查询的输出:

+----------+
| NEW_STR  |
+----------+
| NULL     |
+----------+

示例

如果将-1(负值)作为length参数值传递给函数,则STUFF()函数将返回NULL字符串。

在此程序中,我们使用 SQL STUFF()函数将字符串“point”插入到字符串“Tutorials”中,起始位置为2,长度为-1

SELECT STUFF('Tutorials', 2, -1, 'point') AS NEW_STR;

输出

执行上述程序后,它将产生以下输出:

+----------+
| NEW_STR  |
+----------+
| NULL     |
+----------+

示例

如果length参数值为,则在起始位置插入,并且不从第一个表达式中删除任何字符。

SELECT STUFF('Tutorials', 2, 0, 'point') AS NEW_STR;

输出

执行上述语句后,它将产生以下输出:

+----------------+
| NEW_STR        |
+----------------+
| Tpointutorials |
+----------------+

示例

如果length参数值长于第一个表达式,则删除到第二个表达式中的最后一个字符。

在下面的示例中,我们使用 SQL STUFF()函数将第二个字符串“point”插入到第一个字符串“Tutorials”中,起始位置为2,长度值长于第一个字符串15

SELECT STUFF('Tutorials', 2, 15, 'point') AS NEW_STR;

输出

以下是上述查询的输出:

+----------------+
| NEW_STR        |
+----------------+
| Tpoint         |
+----------------+

示例

您还可以将列名作为参数传递给 SQL STUFF()函数,以将一列值插入到另一列中。假设我们使用CREATE语句创建了一个名为Customers的表,如下所示:

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

让我们使用INSERT语句将一些记录插入到Customers表中,如下所示:

INSERT INTO CUSTOMERS VALUES (1, 'Rohan','Verma', 33, 'Hyderbad', 2100.00 ); 
INSERT INTO CUSTOMERS VALUES (2, 'Kamlesh','Kumar', 30, 'Lucknow', 2500.00 ); 
INSERT INTO CUSTOMERS VALUES (3, 'Seeta','Sharma', 23, 'Delhi', 3150.00 );

以下 SQL 查询将一列LAST_NAME的值插入到Customer表的另一列FIRST_NAME中:

SELECT ID, FIRST_NAME,LAST_NAME, STUFF(FIRST_NAME, 2, 4, LAST_NAME) AS NEW_NAME FROM CUSTOMERS;

输出

以下是上述查询的输出:

+----+------------+-------------+-----------+
| ID | FIRST_NAME | LAST_NAME   |NEW_NAME   |           
+----+------------+-------------+-----------+
|  1 | Rohan      | Verma       |  RVerma   |
|  2 | Kamlesh    | Kumar       |  KKumarsh |
|  3 | Seeta      | Sharma      |  SSharma  |
+----+------------+-------------+-----------+
sql-string-functions.htm
广告