一、概述:

MSSQL字符串的拆分没有封装太多常用的方式,所以如果向数据库中插入用特殊字符分割字符串(比如CB0$CB2$CB3,CB0$CB2$CB3)时就可能需要数据库能够分割字符串,SQL中拆分字符串的常用方法有

1、len(@strname) :查询字符串的长度

2、charindex('$',@strname,1) :查询特殊字符存在的位置index

3、substring(@strname,startindex,length):截取字符串长度

4、left(@strname,length):左边截取length字符

5、right(@strname,length):右边截取length字符

二、字符串动态拆分

现在完成一个查询,要求:动态输入格式CB1,CB2,CB3类似的字符串,字符串中间有个逗号分隔符,用字符串拆分,动态分割出所有组合字符串(逗号左右字符串);

实例1:

declare @PowerString nvarchar()
set @PowerString='CB0$CB2$CB3,CB0$CB2$CB3'
declare @startindex int
declare @endindex int
declare @CurrResult nvarchar() set @startindex=
set @endindex=
while =
begin
set @endindex=charindex(',',@PowerString,@startindex);
if @endindex=
set @endindex=LEN(@PowerString)+
set @CurrResult=SUBSTRING(@PowerString,@startindex,@endindex-@startindex)
select @CurrResult
set @startindex=@endindex+
if @CurrResult is null or @CurrResult='' or @endindex=LEN(@PowerString)+
break;
end

实例二:一个存储过程,通过字符串拆分加上事务绑定,能够保证数据的完整性

Alter Proc p_HotelTour_Create
@HotelCode nvarchar(),
@TouPics nvarchar(),
@resultcode int output
as
begin
declare @startindex int
declare @endindex int
declare @CurrResult nvarchar()
set @startindex=
set @endindex=
begin tran
begin try
--插入内容图片
while =
begin
set @endindex=charindex('$',@TouPics,@startindex);
if @endindex=
set @endindex=LEN(@TouPics)+
set @CurrResult=SUBSTRING(@TouPics,@startindex,@endindex-@startindex)
if not exists(select c_TourCode from HotelTour where c_HotelCode=@HotelCode and c_TourCode=@CurrResult)
insert into HotelTour(c_HotelCode,c_TourCode,i_IsEnable) values(@HotelCode,@CurrResult,)
set @startindex=@endindex+
if @CurrResult is null or @CurrResult='' or @endindex=LEN(@TouPics)+
break;
end
commit tran
set @resultcode=
end try
begin catch
rollback tran
set @resultcode=-
end catch
end

SQL数据字符串的拆分的更多相关文章

  1. sql 拼接字符串单条拆分多条

    SELECT * FROM ( SELECT A.WS_ID , B.NEXT_OPERATOR FROM ( SELECT WS_ID , [NEXT_OPERATOR] = CONVERT(XML ...

  2. sql 把一个用逗号分隔的多个数据字符串变成一个表的一列

    USE [tms]GO/****** Object: UserDefinedFunction [dbo].[StrToTable] Script Date: 2017/4/26 9:06:20 *** ...

  3. MSSQL Server数据库的四种连接方法和sql连接字符串

    MSSQL Server数据库的四种连接方法和sql连接字符串 分类: [ 03 ] C#(131) [ 07 ] SQL Server(68) [ 01 ] .NET(189) 今天用SQL Ser ...

  4. SQL数据库面试题

    SQL数据库面试题 1.SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值 这种情况其实我们经常用到,比如我们新建了一个用户,建立完用户后我们希望马上得到这个新用户的ID ...

  5. sql数据黑马程序员——SQL入门

    最近研究sql数据,稍微总结一下,以后继续补充: ---------------------- ASP.Net+Android+IO开辟S..Net培训.等待与您交流! --------------- ...

  6. SQL数据缓存依赖总结

    以前只听过SQL server数据缓存依赖,但一直没使用,由于项目需要,才研究了一番,发现了一个很诡异的问题,竟然是一个操作顺序问题导致的. SQL server数据缓存依赖有两种实现模式,轮询模式, ...

  7. SQL数据查询之——单表查询

    一.SQL数据查询的一般格式 数据查询是数据库的核心操作.SQL提供了SELECT语句进行数据查询,其一般格式为: SELECT [ALL | DISTINCT]<目标列表达式>[,< ...

  8. sql server字符串的类型

    sql server字符串分为不同的类型,下面就将为您介绍几个sql server字符串的常见类型,希望对您学习sql server字符串能有所帮助. nchar 此数据类型可存储1~4000个定长U ...

  9. SQL中字符串截取、连接、替换等函数的用法

    一.SQL中SUBSTRING函数的用法1.功能:返回字符.二进制.文本或图像表达式的一部分2.语法:SUBSTRING ( expression, start, length )3.QL 中的 su ...

随机推荐

  1. Panabit安装配置笔记

    最近研究了linux下基于FREEBSD的开源流控软件Panabit,感觉功能还不错,单位公司如果经费不足的朋友需要做内网流控可以使用这款软件,最新免费版ISO镜像仅支持网桥模式和旁路模式,256个并 ...

  2. CCF 模拟D 动态规划

    http://115.28.138.223:81/view.page?opid=4 这道题写的我醉醉的,想建一棵指定深度的树最后统计满足条件的个数 居然没去考虑这样必然超时!!!代码写的也是醉了,把没 ...

  3. python成长之路 :线程、进程和协程

    python线程 进程与线程的历史 我们都知道计算机是由硬件和软件组成的.硬件中的CPU是计算机的核心,它承担计算机的所有任务. 操作系统是运行在硬件之上的软件,是计算机的管理者,它负责资源的管理和分 ...

  4. bootstrap常用的定义风格

    primary()     首选项 success()     成功 info()        一般信息 warning()       警告 danger()         危险 <bod ...

  5. ThreadPool线程池 小结

    ThreadPool类提供一个线程池,该线程池可用于发送工作项.处理异步 I/O.代表其他线程等待以及处理计时器 线程池通过为应用程序提供一个由系统管理的辅助线程池使您可以更为有效地使用线程.一个线程 ...

  6. 【leetcode】Partition List

    Partition List Given a linked list and a value x, partition it such that all nodes less than x come ...

  7. linux mysql查看安装信息

    ps -ef|grep mysql root               ?        :: /bin/sh /usr/bin/mysqld_safe --datadir=/var/lib/mys ...

  8. iOS 关于iphone6 和 iphone6 plus 的适配

    http://www.ui.cn/detail/26980.html 根据上面说的,iphone6 plus的屏幕的编程时的宽度应该是414,我理解的也是这样,但是我用iphone6 plus 模拟器 ...

  9. ada 图形编辑器 - GNAT GPL

    The GNAT GPL and SPARK GPL Editions are made available to the free software developers by AdaCore. T ...

  10. [Android Studio导入第三方类库方法] Error:(19, 23) 错误: 程序包org.apache.http不存在

    本文主要参考以下链接: http://m.blog.csdn.net/blog/BoxRice/48575027 https://drakeet.me/android-studio http://ww ...