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