SQLServer中的切割字符串SplitString函數(shù)
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/*
by kudychen 2011-9-28
*/
CREATE function [dbo].[SplitString]
(
@Input nvarchar(max), --input string to be separated
@Separator nvarchar(max)=',', --a string that delimit the substrings in the input string
@RemoveEmptyEntries bit=1 --the return value does not include array elements that contain an empty string
)
returns @TABLE table
(
[Id] int identity(1,1),
[Value] nvarchar(max)
)
as
begin
declare @Index int, @Entry nvarchar(max)
set @Index = charindex(@Separator,@Input)
while (@Index>0)
begin
set @Entry=ltrim(rtrim(substring(@Input, 1, @Index-1)))
if (@RemoveEmptyEntries=0) or (@RemoveEmptyEntries=1 and @Entry<>'')
begin
insert into @TABLE([Value]) Values(@Entry)
end
set @Input = substring(@Input, @Index+datalength(@Separator)/2, len(@Input))
set @Index = charindex(@Separator, @Input)
end
set @Entry=ltrim(rtrim(@Input))
if (@RemoveEmptyEntries=0) or (@RemoveEmptyEntries=1 and @Entry<>'')
begin
insert into @TABLE([Value]) Values(@Entry)
end
return
end
如何使用:
declare @str1 varchar(max), @str2 varchar(max), @str3 varchar(max)
set @str1 = '1,2,3'
set @str2 = '1###2###3'
set @str3 = '1###2###3###'
select [Value] from [dbo].[SplitString](@str1, ',', 1)
select [Value] from [dbo].[SplitString](@str2, '###', 1)
select [Value] from [dbo].[SplitString](@str3, '###', 0)
執(zhí)行結(jié)果:
例如根據(jù)某表的ID保存排序:
具體的應(yīng)用請(qǐng)根據(jù)自己的情況來(lái)吧:)
作者:Kudy
- SQL Server中常用截取字符串函數(shù)介紹
- SQL SERVER 2012新增函數(shù)之字符串函數(shù)FORMAT詳解
- SQL SERVER2012中新增函數(shù)之字符串函數(shù)CONCAT詳解
- SQL server中字符串逗號(hào)分隔函數(shù)分享
- SQL Server實(shí)現(xiàn)split函數(shù)分割字符串功能及用法示例
- SQL Server字符串切割函數(shù)
- sqlserver replace函數(shù) 批量替換數(shù)據(jù)庫(kù)中指定字段內(nèi)指定字符串參考方法
- Sql Server 字符串聚合函數(shù)
- SQL?Server中字符串函數(shù)的用法詳解
相關(guān)文章
SQL語(yǔ)句如何實(shí)現(xiàn)超簡(jiǎn)單的多表查詢
多表查詢就是在一條查詢語(yǔ)句中,從多張表里一起取出所需的數(shù)據(jù),如果要想進(jìn)行多表查詢,下面這篇文章主要給大家介紹了關(guān)于SQL語(yǔ)句如何實(shí)現(xiàn)超簡(jiǎn)單的多表查詢的相關(guān)資料,需要的朋友可以參考下2022-05-05SQL Server 數(shù)據(jù)庫(kù)備份和還原認(rèn)識(shí)和總結(jié)(二)
本文將針對(duì)上文繼續(xù)進(jìn)行數(shù)據(jù)備份和還原講解,主要講解備份和還原的一些關(guān)鍵選項(xiàng)2012-08-08SQL?IFNULL()函數(shù)詳細(xì)解析(最新推薦)
IFNULL()?函數(shù)用于判斷第一個(gè)表達(dá)式是否為?NULL,如果為?NULL?則返回第二個(gè)參數(shù)的值,如果不為?NULL?則返回第一個(gè)參數(shù)的值,這篇文章主要介紹了SQL?IFNULL()函數(shù)詳細(xì)解析,需要的朋友可以參考下2023-01-01安裝完成后如何找回SQL Server實(shí)例安裝時(shí)的序列號(hào)
當(dāng)我們需要再次安裝sqlserver時(shí),如何找回sqlserver實(shí)例安裝時(shí)的序列號(hào)呢?下面,跟著腳本之家小編一起學(xué)習(xí)安裝完成后如何找回SQL Server實(shí)例安裝時(shí)的序列號(hào),需要的朋友可以參考下2015-09-09sql server中Select count(*)和Count(1)的區(qū)別和執(zhí)行方式
在SQL Server中Count(*)或者Count(1)或者Count([列])或許是最常用的聚合函數(shù)。很多人其實(shí)對(duì)這三者之間是區(qū)分不清的。本文會(huì)闡述這三者的作用,關(guān)系以及背后的原理2015-02-02IP連接SQL SERVER失敗(配置為字符串失敗)圖文解決方法
這篇文章主要介紹了使用IP連接SQL SERVER失敗和配置為連接字符串連接失敗的解決方法,大家參考使用2013-11-11SQL Server誤區(qū)30日談 第7天 一個(gè)實(shí)例多個(gè)鏡像和日志傳送延遲
這個(gè)誤區(qū)就有點(diǎn)老生常談了。每一個(gè)主體服務(wù)器只允許一個(gè)鏡像服務(wù)器。如果你希望存在多個(gè)主體服務(wù)器的副本,那么請(qǐng)使用事務(wù)日志傳送,事務(wù)日志傳送允許針對(duì)每一個(gè)主體存在多個(gè)輔助實(shí)例2013-01-01使用SQL Server數(shù)據(jù)庫(kù)嵌套子查詢的方法
使用SQL Server數(shù)據(jù)庫(kù)嵌套子查詢的方法...2007-03-03SQL Server中的集合運(yùn)算: UNION, EXCEPT和INTERSECT示例代碼詳解
這篇文章主要介紹了SQL Server中的集合運(yùn)算: UNION, EXCEPT和INTERSECT,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08