当前位置:  数据库>sqlserver

sql server中使用Split()的方法介绍

    来源: 互联网  发布时间:2014-08-29

    本文导语:  有时想根据某个标识截取一下字符串,此时如果能有一个像ASP.NET里面的Split方法,真是不错哦。 自己写一个SplitString函数吧,下面我的实现代码,供大家参考。   代码如下:     SET ANSI_NULLS ON     GO     SET QUOTED_IDENTIFIER O...

有时想根据某个标识截取一下字符串,此时如果能有一个像ASP.NET里面的Split方法,真是不错哦。
自己写一个SplitString函数吧,下面我的实现代码,供大家参考。
 

代码如下:

    SET ANSI_NULLS ON
    GO
    SET QUOTED_IDENTIFIER ON
    GO

    CREATE function [dbo].[SplitString]
    (
        @Input nvarchar(max),
        @Separator nvarchar(max)=',',
        @RemoveEmptyEntries bit=1
    )
    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)

输出结果如下图所示:

里面还有个自增的[Id]字段哦,在某些情况下有可能会用上的,例如根据Id来保存排序等等。

例如根据某表的ID保存排序:
 

代码如下:
update a set a.[Order]=t.[Id]
from [dbo].[表] as a join [dbo].SplitString('1,2,3', ',', 1) as t on a.[Id]=t.[Value]

至些,sql server中实现split()函数的内容就介绍完了,希望对大家有所帮助。


    
 
 

您可能感兴趣的文章:

  • java命名空间java.sql接口statement的类成员方法: executeupdate定义及介绍
  • 安装SQL2008时提示删除SQL2005Express工具的解决方法
  • java命名空间java.sql接口connection的类成员方法: nativesql定义及介绍
  • C#使用带like的sql语句时防sql注入的方法
  • java命名空间java.sql接口preparedstatement的类成员方法: executeupdate定义及介绍
  • sql无效字符引起的执行sql语句报错的解决方法
  • java命名空间java.sql接口rowid的类成员方法: getbytes定义及介绍
  • SQL Server降权运行 SQL Server 2000以GUESTS权限运行设置方法
  • java命名空间java.sql接口ref的类成员方法: getbasetypename定义及介绍
  • (X86/X64)安装sql server 2005 过程中提示“无法启动sql server的 启动”的解决方法
  • java命名空间java.sql接口databasemetadata的类成员方法: getsqlkeywords定义及介绍
  • sql数据库多用户模式修改方法
  • java命名空间java.sql接口rowid的类成员方法: tostring定义及介绍
  • 安装sql server 2008 management提示已安装 SQL Server 2005 Express的解决方法
  • java命名空间javax.sql.rowset接口joinrowset的类成员方法: getwhereclause定义及介绍
  • C#代码验证sql语句是否正确(只验证不执行sql)的方法
  • java命名空间java.sql接口statement的类成员方法: execute定义及介绍
  • Sql2000与Sql2005共存安装的解决方法
  • java命名空间java.sql接口resultset的类成员方法: getcursorname定义及介绍
  • SQL查找某一条记录的方法
  • java命名空间java.sql接口resultsetmetadata的类成员方法: getcolumntype定义及介绍
  • sql server 代理(已禁用代理xp)的解决方法
  • mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
  • 在SQL Server中使用SQL语句查询一个存储过程被其它所有的存储过程引用的存储过程名
  • SQL Server SQL Agent服务使用教程小结
  • 在使用中,经常出现提示为:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]连接占线导致另一个 hstmt,是什么意思,怎样解
  • SQL Server设置主键自增长列(使用sql语句实现)
  • sql server对索引的使用
  • 使用php语句将数据库*.sql文件导入数据库
  • sql server 使用ntile获取数据的例子
  • HBase上使用SQL查询 Phoniex
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • SQL Server 2008如何进行数据库分离和附加详细介绍
  • 微软网站下载的Ms SQL Server2000 JDBC Driver,必须用英文版的SQL server2000吗?
  • 请问,这是什么错误!java.sql.SQLException: [Microsoft][ODBC SQL Server Driver][Named Pipes]??????? SQL Server?虽然分少,但一定给,只要您是前5名回复者中最好的以为!
  • SQL Server 2008 事件探查器(SQL SERVER Profiler) 列的说明
  • MS SQL Server2014链接到MS SQL Server 2000的解决方案及问题处理
  • SQL语句实现SQL Server 2000及Sql Server 2005日志收缩(批量)
  • sql server不存在 sql server拒绝访问第1/3页
  • SQL Server误区30日谈 第5天 AWE在64位SQL SERVER中必须开启
  • 一定得帮我看看sql server2000通过sql server2000jdbc driver的代码
  • SQL Server统计SQL语句执行时间的脚本
  • SQL Server误区30日谈 第21天 数据损坏可以通过重启SQL Server来修复
  • SQL Server误区30日谈 第3天 即时文件初始化特性可以在SQL Server中开启和关闭
  • 创建 sql server 链接服务器的sql代码
  • jsp jdbc为什麽不能把数据insert到sql server 中,也不能从sql server中提取数据?!
  • 如何处理此错误:java.sql.SQLException: [Microsoft][ODBC SQL Server Driver]没有执行可选特性
  • sql server 2005 三个常用的小sql
  • SQL Server 中查看SQL句子执行所用的时间
  • 推荐SQL Server 重新恢复自动编号列的序号的sql代码
  • SQL Server口令 sql server安全性第1/2页
  • SQL Server 压缩日志与减少SQL Server 文件大小的方法
  • SQL Server"错误 21002: [SQL-DMO]用户 * 已经存在问题解决
  • java命名空间javax.sql.rowset.spi类syncprovider的类成员方法: getrowsetwriter定义及介绍
  • SQL查询分析工具 SQL Workbench/J
  • java命名空间java.sql接口sqlinput的类成员方法: readblob定义及介绍
  • oracle导出sql语句的结果集和保存执行的sql语句(深入分析)
  • java命名空间java.sql接口sqlinput的类成员方法: readarray定义及介绍
  • SQL客户端软件 PKLite SQL Client
  • java命名空间java.sql接口sqlinput的类成员方法: readsqlxml定义及介绍
  • SQL客户端管理工具 SQuirreL SQL Client
  • java命名空间java.sql接口sqlinput的类成员方法: readrowid定义及介绍
  • sql2005 大数据量检索分页的sql代码


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3