sql實(shí)現(xiàn)split函數(shù)的腳本
--創(chuàng)建一個(gè)函數(shù),函數(shù)中有兩個(gè)參數(shù)
Create FUNCTION [dbo].[SplitToTable]
(
@SplitString nvarchar(max),--輸入的字符串
@Separator nvarchar(10)=' '--分割條件
)
--返回的數(shù)據(jù)為一個(gè)表
RETURNS @SplitStringsTable TABLE
(
[id] int identity(1,1),
[value] nvarchar(max)
)
AS
BEGIN
DECLARE @CurrentIndex int;--當(dāng)前索引
DECLARE @NextIndex int;--下一個(gè)索引
DECLARE @ReturnText nvarchar(max);--返回內(nèi)容
SELECT @CurrentIndex=1;--設(shè)置當(dāng)前索引初始值為1
--當(dāng)當(dāng)前索引小于字符串長度時(shí),執(zhí)行循環(huán)體
WHILE(@CurrentIndex<=len(@SplitString))
BEGIN
--CHARINDEX函數(shù)返回字符或者字符串在另一個(gè)字符串中的起始位置。CHARINDEX函數(shù)調(diào)用方法如下:
--CHARINDEX ( expression1 , expression2 [ , start_location ] )
-- Expression1是要到expression2中尋找的字符中,start_location是CHARINDEX函數(shù)開始在expression2中找expression1的位置。
SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);
IF(@NextIndex=0 OR @NextIndex IS NULL)
SELECT @NextIndex=len(@SplitString)+1;
--函數(shù)用法:SUBSTRING ( expression, start, length )
SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);
INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText);
SELECT @CurrentIndex=@NextIndex+1;
END
RETURN;
END
go
--測試函數(shù)
select * FROm dbo.SplitToTable('a,b,c,d,e,f,g', ',')
相關(guān)文章
使用BULK INSERT大批量導(dǎo)入數(shù)據(jù) SQLSERVER
使用BULK INSERT大批量導(dǎo)入數(shù)據(jù) SQLSERVER,需要的朋友可以參考下。2011-12-12將mater庫中的系統(tǒng)存儲過程批量生成*.sql文件 通用且非常實(shí)用
最近因?yàn)橄到y(tǒng)需要,需要將master庫的所有和業(yè)務(wù)相關(guān)的存儲過程批量生成 存儲過程名.sql 文件,默認(rèn)是不可以導(dǎo)出的2012-05-05SQL中的開窗函數(shù)詳解可代替聚合函數(shù)使用
這篇文章主要介紹了SQL中的開窗函數(shù)詳解可代替聚合函數(shù)使用,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03MSSQL監(jiān)控?cái)?shù)據(jù)庫的DDL操作(創(chuàng)建,修改,刪除存儲過程,創(chuàng)建,修改,刪除表等)
下面就是一個(gè)解決上述問題的方案,我們通過創(chuàng)建一個(gè)表DatabaseLog和DDL觸發(fā)器來解決問題,首先在msdb數(shù)據(jù)庫里面新建一個(gè)表DatabaseLog,用來保存DDL觸發(fā)器獲取的信息2013-08-08SQL Server"錯(cuò)誤 21002: [SQL-DMO]用戶 * 已經(jīng)存在問題解決
在分配數(shù)據(jù)庫登錄用戶的數(shù)據(jù)庫訪問權(quán)限的時(shí)候出現(xiàn)這種錯(cuò)誤,如果選中某一個(gè)數(shù)據(jù)庫的任何一個(gè)角色就會出現(xiàn)這個(gè)錯(cuò)誤2009-04-04一文詳解如何遠(yuǎn)程連接SQLServer數(shù)據(jù)庫
sql server是一款數(shù)據(jù)庫管理工具,其中有非常多實(shí)用的功能可以幫助用戶完成數(shù)據(jù)庫的管理操作,也有一些用戶在操作這款軟件的時(shí)候會需要用到遠(yuǎn)程連接功能,這篇文章主要給大家介紹了關(guān)于如何遠(yuǎn)程連接SQLServer數(shù)據(jù)庫的相關(guān)資料,需要的朋友可以參考下2023-10-10sql server多行數(shù)據(jù)拼接的實(shí)例方法
sql server多行數(shù)據(jù)拼接的實(shí)例方法,需要的朋友可以參考一下2013-04-04