在SQL SERVER中实现Split功能的函数,并在存储过程中使用

代码

CREATE FUNCTION dbo.SplitString
(
          @Expression NVARCHAR(4000), --要拆分的字符串
          @Delimiter NVARCHAR(100), --拆分符号
          @n INT --要得到已拆分的返回字符串位置
)
RETURNS NVARCHAR(4000)
AS
BEGIN
DECLARE @p INT
SET @p = CharIndex(@Delimiter,@Expression)
IF @p > 0
          BEGIN
          SET @p = @p + Len(@Delimiter) - 1
          END
DECLARE @i INT
SET @i = 1
WHILE @i < @n
          BEGIN
          SET @i = @i + 1
          SET @Expression = SubString(@Expression, @p + 1,Len(@Expression) - @p )
          SET @p = CharIndex(@Delimiter,@Expression)
          IF @p > 0
                    BEGIN 
                    SET @p = @p + Len(@Delimiter) - 1
                    END
          ELSE
                    BEGIN
                    BREAK
                    END
END

DECLARE @s NVARCHAR(1000)
IF @p = 0 AND @i = @n
          BEGIN
          SET @s = @Expression
          END
ELSE
          IF @i = @n
          BEGIN
          SET @s = SubString(@Expression, 1,@p - Len(@Delimiter))
          END
RETURN @s
END

使用方法:

代码

DECLARE @string NVARCHAR(50)
SET @string  = '在|SQL SERVER|中实现Split|功能的|函数|'
DECLARE @split NVARCHAR(4)
SET @split = '|'
SELECT dbo.SplitString (@string, @split, 1)   --在
SELECT dbo.SplitString (@string, @split, 2)   --SQL SERVER
SELECT dbo.SplitString (@string, @split, 3)   --中实现Split
SELECT dbo.SplitString (@string, @split, 4)   --功能的
SELECT dbo.SplitString (@string, @split, 5)   --函数
SELECT dbo.SplitString (@string, @split, 6)   --null

 

 

时间: 2024-11-29 17:07:35

在SQL SERVER中实现Split功能的函数,并在存储过程中使用的相关文章

sql中实现split()功能

原文:sql中实现split()功能 http://www.cnblogs.com/yangyy753/archive/2011/11/23/2260618.html 数据库中,总是遇到一些字段内容,想根据某个标识截取一下字符串,可是都想不到好办法,如果能有一个像ASP.NET里面的Split方法,那该多好,多方便啊! 为什么不可以?我们自己写一个函数不就可以解决了吗?好吧,说干就干,自己来写个SplitString函数! SET ANSI_NULLS ON GO SET QUOTED_IDEN

求大神帮下忙,小弟需要一个java连接sql server数据库实现查询功能的代码

问题描述 求大神帮下忙,小弟需要一个java连接sql server数据库实现查询功能的代码 如题 求大神给个查询功能的代码 做毕业设计需要 帮帮忙 下面附上添加功能的代码 public int Add(Client c) { int count=0; try { con=this.getcon(); String sql=String.format("insert Client values('%s',%d,'%s','%s','%s','%s','%s',0,'%s')", c.g

SQL Server 2016 Alwayson新增功能图文详解

概述 SQLServer2016发布版本到现在已有一年多的时间了,目前最新的稳定版本是SP1版本.接下来就开看看2016在Alwyson上做了哪些改进,记得之前我在写2014Alwayson的时候提到过几个需要改进的问题在2016上已经做了改进. 一.自动故障转移副本数量 在2016之前的版本自动故障转移副本最多只能配置2个副本,在2016上变成了3个. 说明:自动故障转移增加到三个副本影响并不是很大不是非常的重要,多增加一个故障转移副本也意味着你的作业也需要多维护一个副本.重要程度(一般).

sql server-新手学习数据库 安装SQL server 2014选择哪些功能就够用了?

问题描述 新手学习数据库 安装SQL server 2014选择哪些功能就够用了? 只是写写SQL语句 大学数据库课程用的 解决方案 学习当然是全选了

SQL Server 2008的CDC功能

CDC(Change Data Capture)通过对事务日志的异步读取,记录DML操作的发生时间.类型和实际影响的 数据变化,然后将这些数据记录到启用CDC时自动创建的表中.通过cdc相关的存储过程,可以获取详细的 数据变化情况.由于数据变化是异步读取的,因此对整体性能的影响不大,远小于通过Trigger实现的数 据变化记录. 下面我用一个实例讲解这个功能.该功能主要在ETL解决方案中比较有用. USE AdventureWorksDW; GO EXECUTE sys.sp_cdc_enabl

Sql Server 2005自定义Split函数

 要求取得字符串aa,dd,cc,rr,fff中某个位置的字符串,如果在C#或Java很容易通过Split来实现,但是在Sql Server中就没有直接提供Split这个函数. 当然,此类问题总是可以解决的. ALTER function [dbo].[core_split] ( @str varchar(100), @split char(1), @index int ) returns varchar(10) as begin declare @count int declare @s va

win2008下安装SQL SERVER 2005出现IIS功能要求 警告解决方案_win服务器

您会收到 SQL Server 2005 安装程序正在运行 Windows Vista 的计算机上的系统配置检查页或 Windows Server 2008 的一个服务器核心安装上一条警告消息 症状: 请考虑以下情形.您安装 Microsoft SQL Server 2005 或 Microsoft SQL Server 2005 速成版通过高级服务正在运行下列操作系统之一的计算机上:•Windows Server 2008 操作系统 •Windows Vista 操作系统 在这种情况下您会收到

sql server 自定义分割月功能详解及实现代码_MsSql

在最近的项目开发过程中,遇到了Sql server自动分割月的功能需求,这里在网上整理下资料.       1.为何出现自定义分割月的需求 今天梳理一个平台的所有函数时,发现了一个自定义分割月函数,也就是指定分割月的开始日索引值(可以从1-31闭区间内的任何一个值)来获取指定日期所对应的分割月数值.这个函数当时是为了解决业务部门获取非标准月(标准月就是从每个月的第一天到最后一天组成一个完成的标准月份)的统计汇总数据的.例如:如果指定分割月的开始日索引值为5则表示某个月的5号到下个月的4号之间作为

sql server 自定义分割月功能详解及实现代码

在最近的项目开发过程中,遇到了Sql server自动分割月的功能需求,这里在网上整理下资料. 1.为何出现自定义分割月的需求 今天梳理一个平台的所有函数时,发现了一个自定义分割月函数,也就是指定分割月的开始日索引值(可以从1-31闭区间内的任何一个值)来获取指定日期所对应的分割月数值.这个函数当时是为了解决业务部门获取非标准月(标准月就是从每个月的第一天到最后一天组成一个完成的标准月份)的统计汇总数据的.例如:如果指定分割月的开始日索引值为5则表示某个月的5号到下个月的4号之间作为一个完整的分