题目有点标题党哈~不好意思,其实就是今天新学的一个小方法,分享一下给大家。

数据库中,总是遇到一些字段内容,想根据某个标识截取一下字符串,可是都想不到好办法,如果能有一个像ASP.NET里面的Split方法,那该多好,多方便啊!

为什么不可以?我们自己写一个函数不就可以解决了吗?好吧,说干就干,自己来写个SplitString函数!

SET ANSI_NULLS ONGOSET QUOTED_IDENTIFIER ONGO

CREATE function [dbo].[SplitString](@Input nvarchar(max),    @Separator nvarchar(max)=',',     @RemoveEmptyEntries bit=1 )returns @TABLE table ([Id] int identity(1,1),[Value] nvarchar(max)) asbegin declare @Index int, @Entry nvarchar(max)set @Index = charindex(@Separator,@Input)

while (@Index>0)beginset @Entry=ltrim(rtrim(substring(@Input, 1, @Index-1)))

if (@RemoveEmptyEntries=0) or (@RemoveEmptyEntries=1 and @Entry<>'')begininsert 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<>'')begininsert into @TABLE([Value]) Values(@Entry)end

returnend

函数、表都建好了,下面调用测试一下吧:

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]

具体的应用请根据自己的情况来吧。好了,总结到这,希望喜欢的朋友可以收藏吧,我也是给自己以后用的

转载于:https://www.cnblogs.com/yangyy753/archive/2011/11/23/2260618.html

SQL里面也能用Split()相关推荐

  1. java split 实现_PL/SQL实现JAVA中的split()方法的例子

    众所周知,java中为String类提供了split()字符串分割的方法,所以很容易将字符串以指定的符号分割为一个字符串数组.但是在pl/sql中并没有提供像java中的split()方法,所以要想在 ...

  2. html+分割字符,sql拆分字符串split

    SQL里有没有类似SPLIT的分割字符串函数 createfunctionf_split(@cvarchar(2000),@splitvarchar(2)) returns@ttable(colvar ...

  3. SPLIT 分区的简单研究

    1.split时需要有多少空闲空间 2.split会不会产生大量的redo 3.split的实现原理 我们要分两种情况讨论: 1.在split边界的两边都有值 2.只在split边界的一边有值 第一个 ...

  4. SQL Server中的数据库表分区

    什么是数据库表分区? (What is a database table partitioning?) Partitioning is the database process where very ...

  5. 学习PowerShell和SQL Server –简介

    介绍 (Introduction) This article is the first step among many that I hope will help give you a foundat ...

  6. oracle分区区别,oracle范围分区表和INTERVAL分区表对于SPLIT分区的区别

    范围分区表和INTERVAL分区表是可以相互转化的,不过二者还是有所区别的.比如在SPLIT分区的时候,范围分区表没有限制,而INTERVAL分区表则可能报错. 首先看范围分区的例子: SQL> ...

  7. 分布式 | 如何通过 dble 的 split 功能,快速地将数据导入到 dble 中

    作者:马莹乐 爱可生研发团队成员,负责 mysql 中间件的测试.本人是测试技术爱好者,欢迎大家试用 dble 新功能~ 本文来源:原创投稿 *爱可生开源社区出品,原创内容未经授权不得随意使用,转载请 ...

  8. 可编程的SQL是什么样的?

    背景 如果你使用传统编程语言,比如Python,那么恭喜你,你可能需要解决大部分你不需要解决的问题,用Python你相当于拿到了零部件,而不是一辆能跑的汽车.你花了大量时间去组装汽车,而不是去操控汽车 ...

  9. SQL脚本实现算法模型的训练,预测

    前言 搜索团队正好需要计算一些词汇的相似性,这个用Word2Vec是很方便的.于是我立马安排算法团队帮个忙弄下.但回头想想,因为这么点事,打断了算法手头的工作,这简直不能忍. 由于我司内部已经在使用基 ...

最新文章

  1. windows cmd命令行中 查看 修改 删除与添加环境变量
  2. Netty源码分析第7章(编码器和写数据)----第2节: MessageToByteEncoder
  3. python return返回值在计算机内的存储形式_Python如何执行存储过程,获取存储过程返回值...
  4. 20135219洪韶武——信息安全系统设计基础第五周学习总结
  5. 表格cell之间的横线不显示
  6. 正则表达式总结及一些有用的例子
  7. ubuntu12 04下django安装略谈
  8. 将读写锁放到共享内存,实现进程之间对于同一文件的读写操作
  9. elasticsearch mongodb mysql_Elasticsearch 与 Mongodb 数据同步问题
  10. .NET 4 并行(多核)编程系列之一入门介绍
  11. spring自动注入bean
  12. php error unexpected,PHP错误syntax error unexpected T-FUNCTION的解决方案-深圳做网站-创络...
  13. colorsys模块(RGB/HSV/HSL/YIQ)颜色模型简介
  14. 跳房子(二维表上的搜索)
  15. leetcode 5. 最长回文子串(c++)
  16. Groovy 字符串
  17. (已解决)ImportError: torch.utils.ffi is deprecated. Please use cpp extensions instead.
  18. Linux服务器在线测速
  19. 企业IT项目开发之七宗罪(下篇)
  20. dve 二维数组信号 显示波形_VCS课时3:使用DVE进行Debug

热门文章

  1. JAVA中的多线程(八):线程的优先级和yield方法
  2. 我的Android进阶之旅------百度地图学习:BDLocation.getLocType ( )值分析
  3. 用广播监听安卓设备电量状态
  4. cuda中的二分查找
  5. matlab和本机MySQL链接
  6. ORA-01940: cannot drop a user that is currently...
  7. 简单的路由封装ppp
  8. MapReduce 学习指南
  9. C++第五章课后习题-输入n个字符串,把其中以字母A打头的字符串输出
  10. 为何要使用大数据可视化平台