MS SQL Server 字符串截取函数汇总

1、使用parsename,约束:分隔符如. : 不能超过3个,超过3个返回为空

select parsename(replace(‘1:5:30‘,‘:‘,‘.‘),1);--30
select parsename(replace(‘192.168.12.8‘,‘.‘,‘.‘),1);--8

select parsename(replace(’30,180,360,720,1440‘,‘.‘,‘.‘),1);--NULL

 

2、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便 

代码如下:

if exists (select * from dbo.sysobjects where id = object_id(N‘[dbo].[Get_StrArrayStrOfIndex]‘) and xtype in (N‘FN‘, N‘IF‘, N‘TF‘)) drop function [dbo].[Get_StrArrayStrOfIndex] GO

SET QUOTED_IDENTIFIER ON GO SET ANSI_NULLS ON GO

CREATE function Get_StrArrayStrOfIndex ( @str varchar(1024), --要分割的字符串 @split varchar(10), --分隔符号 @index int --取第几个元素 ) returns varchar(1024) as begin declare @location int declare @start int declare @next int declare @seed int

set @str=ltrim(rtrim(@str)) set @start=1 set @next=1 set @seed=len(@split)

set @location=charindex(@split,@str) while @location<>0 and @index>@next begin set @start=@location+@seed set @location=charindex(@split,@str,@start) set @next=@next+1 end if @location =0 select @location =len(@str)+1 --这儿存在两种情况:1、字符串不存在分隔符号 2、字符串中存在分隔符号,跳出while循环后,@location为0,那默认为字符串后边有一个分隔符号。

return substring(@str,@start,@location-@start) end

GO SET QUOTED_IDENTIFIER OFF GO SET ANSI_NULLS ON GO

 调用示例:select dbo.Get_StrArrayStrOfIndex(‘8,9,4‘,‘,‘,2) 返回值:9

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。