今天小編給大家分享一下自己整理一下SQLServer Stuff函數用法技巧和常用示例,有需要的朋友可以學習一下。
一、Stuff函數的作用
1.1官方解釋
STUFF 函數將字符串插入到另一個字符串中。?它從第一個字符串的開始位置刪除指定長度的字符;然后將第二個字符串插入到第一個字符串的開始位置。
1.2 語法格式
STUFF?(?character_expression?,?start?,?length?,replaceWith_expression )
1.3 參數詳解?
1、character_expression
字符數據的表達式。character_expression 可以是常量、變量,也可以是字段或二進制字段。
2、start
start用來指定刪除和插入開始位置的數值。?如果 start 值為負或為零,則返回空字符串。?如果 start 的長度大于第一個 character_expression,則返回空字符串。start 的類型也可以是 bigint。注意:start 值1 表示第一個字符。
3、length
length用來指定要刪除的字符個數。?如果 length值 為負,則返回空字符串。?如果 length 的長度大于第一個 character_expression,則最多可以刪除到最后一個 character_expression 中的最后一個字符。?如果 length 為零,則插入在 start 位置發生,并且不會刪除任何字符。length 的類型也可以是 bigint。
4、replaceWith_expression
字符數據的表達式。character_expression 可以是常量、變量,也可以是字段或二進制字段。?此表達式從 start 開始替換 length 個字符的 character_expression。?如果 replaceWith_expression 為 NULL,則在不插入任何內容的情況下刪除字符。
5、返回類型
如果 character_expression 是支持的字符數據類型之一,則返回字符數據。如果 character_expression 是支持的二進制數據類型之一,則返回二進制數據。
6、備注
如果開始位置或長度值是負數,或者開始位置大于第一個字符串的長度,則返回 Null 字符串。?如果開始位置為 0,則返回 Null 值。?如果要刪除的長度大于第一個字符串的長度,則刪除到第一個字符串中的第一個字符。
如果結果值大于返回類型支持的最大值,則會引發錯誤。
二、Stuff函數用法示例
2.1 刪除字符
select STUFF('hello',1,1,'') as 刪除字符列 -- 刪除第一個字符
? ? ? ? ? ? ? ? ? ? ? ?
2.2 替換字符
select STUFF('hello',4,2,'aa') as 替換字符列 -- 將lo 替換為 aa
? ? ? ? ? ? ? ? ? ? ? ?
2.3 字段拼接功能(實際開發當中比較常用)
1、創建測試數據表
CREATE TABLE [dbo].[T_user]( [id] [varchar](36) NOT NULL, [name] [varchar](36) NULL, [age] [int] NULL, [address] [nvarchar](50) NULL, [create_date] [datetime] NULL, CONSTRAINT [PK_T_user] PRIMARY KEY CLUSTERED( [id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
2、插入數據
1 admin 25 北京 2020-08-22 00:00:00.000
2 user 30 南京 2020-08-22 00:00:00.000
3、查詢腳本示例
SELECT STUFF((SELECT ','+name FROM dbo.T_user FOR XML PATH('')),1,1,'') names
說明:
執行結果:
? ? ? ? ? ? ? ? ? ? ? ?
IT技術分享社區
個人博客網站:https://programmerblog.xyz
文章推薦程序員效率:畫流程圖常用的工具程序員效率:整理常用的在線筆記軟件遠程辦公:常用的遠程協助軟件,你都知道嗎?51單片機程序下載、ISP及串口基礎知識硬件:斷路器、接觸器、繼電器基礎知識