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)前索引小于字符串長(zhǎ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ù)開(kāi)始在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
--測(cè)試函數(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庫(kù)中的系統(tǒng)存儲(chǔ)過(guò)程批量生成*.sql文件 通用且非常實(shí)用
最近因?yàn)橄到y(tǒng)需要,需要將master庫(kù)的所有和業(yè)務(wù)相關(guān)的存儲(chǔ)過(guò)程批量生成 存儲(chǔ)過(guò)程名.sql 文件,默認(rèn)是不可以導(dǎo)出的2012-05-05SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用
這篇文章主要介紹了SQL中的開(kāi)窗函數(shù)詳解可代替聚合函數(shù)使用,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03MSSQL監(jiān)控?cái)?shù)據(jù)庫(kù)的DDL操作(創(chuàng)建,修改,刪除存儲(chǔ)過(guò)程,創(chuàng)建,修改,刪除表等)
下面就是一個(gè)解決上述問(wèn)題的方案,我們通過(guò)創(chuàng)建一個(gè)表DatabaseLog和DDL觸發(fā)器來(lái)解決問(wèn)題,首先在msdb數(shù)據(jù)庫(kù)里面新建一個(gè)表DatabaseLog,用來(lái)保存DDL觸發(fā)器獲取的信息2013-08-08SQL Server"錯(cuò)誤 21002: [SQL-DMO]用戶 * 已經(jīng)存在問(wèn)題解決
在分配數(shù)據(jù)庫(kù)登錄用戶的數(shù)據(jù)庫(kù)訪問(wèn)權(quán)限的時(shí)候出現(xiàn)這種錯(cuò)誤,如果選中某一個(gè)數(shù)據(jù)庫(kù)的任何一個(gè)角色就會(huì)出現(xiàn)這個(gè)錯(cuò)誤2009-04-04一文詳解如何遠(yuǎn)程連接SQLServer數(shù)據(jù)庫(kù)
sql server是一款數(shù)據(jù)庫(kù)管理工具,其中有非常多實(shí)用的功能可以幫助用戶完成數(shù)據(jù)庫(kù)的管理操作,也有一些用戶在操作這款軟件的時(shí)候會(huì)需要用到遠(yuǎn)程連接功能,這篇文章主要給大家介紹了關(guān)于如何遠(yuǎn)程連接SQLServer數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下2023-10-10sql server多行數(shù)據(jù)拼接的實(shí)例方法
sql server多行數(shù)據(jù)拼接的實(shí)例方法,需要的朋友可以參考一下2013-04-04