SQLSERVER SPLIT

CREATE FUNCTION dbo.SPLIT(@Long_str NVARCHAR(MAX),@split_str NVARCHAR(100))
RETURNS  @tmp TABLE(
    ID          inT     IDENTITY PRIMARY KEY,
    short_str   NVARCHAR(MAX)
)
AS
BEGIN
    DECLARE @short_str NVARCHAR(MAX),@split_str_length int,@split_str_Position_Begin int
    SET @split_str_length = LEN(@split_str)
    SET @Long_str=REPLACE(REPLACE(@Long_str,CHAR(10),‘‘),CHAR(13),‘‘)
    IF CHARINDEX(@split_str,@Long_str)=1
         SET @Long_str=STUFF(@Long_str,1,@split_str_length,‘‘)
    IF CHARINDEX(@split_str,@Long_str)=0
        INSERT INTO @tmp SELECT @Long_str
    ELSE
        BEGIN
            WHILE 1>0
                BEGIN
                    SET @split_str_Position_Begin = CHARINDEX(@split_str,@Long_str)
                    SET @short_str=LEFT(@Long_str,@split_str_Position_Begin-1)
                    IF @short_str<>‘‘ INSERT INTO @tmp SELECT @short_str
                    SET @Long_str=STUFF(@Long_str,1,@split_str_Position_Begin+@split_str_length-1,‘‘)
                    SET @split_str_Position_Begin = CHARINDEX(@split_str,@Long_str)
                    IF @split_str_Position_Begin=0
                    BEGIN
                        IF LTRIM(@Long_str)<>‘‘
                            INSERT INTO @tmp SELECT @Long_str
                        BREAK
                    END
                END
        END
    RETURN
END
GO
SELECT short_str from DBO.SPLIT(‘1,2,3‘,‘,‘)
时间: 2024-10-10 04:52:04

SQLSERVER SPLIT的相关文章

SqlServer Split函数

Create FUNCTION [dbo].[SplitToTable] ( @SplitString nvarchar(max), @Separator nvarchar(10)=' ' ) RETURNS @SplitStringsTable TABLE ( [id] int identity(1,1), [value] nvarchar(max) ) AS BEGIN DECLARE @CurrentIndex int; DECLARE @NextIndex int; DECLARE @R

sqlserver字符串拆分(split)方法汇总

--方法0:动态SQL法 declare @s varchar(100),@sql varchar(1000) set @s='1,2,3,4,5,6,7,8,9,10' set @sql='select col='''+ replace(@s,',',''' union all select ''')+'''' PRINT @sql exec (@sql) --方法1:循环截取法 if exists (select * from dbo.sysobjects where id = object

sqlserver 字符串split

select value from TF_NJVALUES('3C457A2D-188B-4D99-A822-2968054E1FB8,3C457A2D-188B-4D99-A822-2968054E1FB8') CREATE FUNCTION TF_NJVALUES ( @P0 varchar(max) --需要截取的字符 ) RETURNS @OUT_TABLE TABLE(value VARCHAR(max)) AS BEGIN DECLARE @SQL varchar(max), @ou

SqlServer常见问题及案例(性能+维护)

缺少索引 案例:某次线上有很多接口请求失败,服务器上发现CPU使用率很高.通过活动分析器(最近耗费大量资源的查询)发现有几个查询的CPU时间(毫秒/秒)达到3000以上.推测是查询没有利用索引导致的,通过在相关表上加索引解决了问题. 分析:大部分性能问题都是因为缺失索引或索引失效导致的(书签查找).此次问题是由于基础表(配置表)之间的连接没有索引,当随着配置的数据越来越多,查询计算量会越来越大,当数据量达到一定量级(几千至几万)且并发比较高(几千)问题就会显现出来.这些问题可以在写查询时建立索引

一步一步搭框架(asp.netmvc+easyui+sqlserver)-03

一步一步搭框架(asp.netmvc+easyui+sqlserver)-03 我们期望简洁的后台代码,如下: using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using formula; using System.Data; namespace demo.Areas.basic.Controllers { public class

(转)解释一下SQLSERVER事务日志记录

本文转载自桦仔的博客http://www.cnblogs.com/lyhabc/archive/2013/07/16/3194220.html 解释一下SQLSERVER事务日志记录 大家知道在完整恢复模式下,SQLSERVER会记录每个事务所做的操作,这些记录会存储在事务日志里,有些软件会利用事务日志来读取 操作记录恢复数据,例如:log explorer 那么事务日志记录怎麽查看,里面都记录了些什么? 打开可以利用下面SQL语句来查看所在数据库的事务日志记录 1 USE [GPOSDB] -

CSV导入SQLSERVER数据库

/// <summary> /// 通过文件流的方式来读取CSV文件 /// </summary> /// <param name="files">文件名称</param> /// <param name="HeadYes">第一行是否为列标题</param> /// <param name="span">分隔符</param> /// <ret

SQLSERVER 索引维护

SQLSERVER 索引维护 2012-03-08 00:30:09|  分类: 默认分类 |  标签:sql  sqlserver  索引  |举报|字号 订阅 Pages & Extents(页和扩展盘区)SQL Server 2000最基本的数据存储单元是data page,1个8K的存储空间.在分配存储空间时,SQL Server 2000并不是每次分配1个page,基本的存储空间分配单元是8个page的连续空间,称为extent.关于SQL Server 2000的page.exten

JavaWeb程序利用Servlet的对SQLserver增删改查操作

声明:学了几天终于将增删改查的操作掌握了,也发现了一些问题,所以总结一下. 重点:操作数据库主要用的是SQL语句跟其他无关. 一:前提知识:PreparedStatement PreperedStatement是Statement的子类,它的实例对象可以通过调用Connection.preparedStatement()方法获得,相对于Statement对象而言:PreperedStatement可以避免SQL注入的问题. Statement会使数据库频繁编译SQL,可能造成数据库缓冲区溢出.P