SQL数据字符串的拆分
一、概述:
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数据字符串的拆分的更多相关文章
- sql 拼接字符串单条拆分多条
SELECT * FROM ( SELECT A.WS_ID , B.NEXT_OPERATOR FROM ( SELECT WS_ID , [NEXT_OPERATOR] = CONVERT(XML ...
- sql 把一个用逗号分隔的多个数据字符串变成一个表的一列
USE [tms]GO/****** Object: UserDefinedFunction [dbo].[StrToTable] Script Date: 2017/4/26 9:06:20 *** ...
- MSSQL Server数据库的四种连接方法和sql连接字符串
MSSQL Server数据库的四种连接方法和sql连接字符串 分类: [ 03 ] C#(131) [ 07 ] SQL Server(68) [ 01 ] .NET(189) 今天用SQL Ser ...
- SQL数据库面试题
SQL数据库面试题 1.SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值 这种情况其实我们经常用到,比如我们新建了一个用户,建立完用户后我们希望马上得到这个新用户的ID ...
- sql数据黑马程序员——SQL入门
最近研究sql数据,稍微总结一下,以后继续补充: ---------------------- ASP.Net+Android+IO开辟S..Net培训.等待与您交流! --------------- ...
- SQL数据缓存依赖总结
以前只听过SQL server数据缓存依赖,但一直没使用,由于项目需要,才研究了一番,发现了一个很诡异的问题,竟然是一个操作顺序问题导致的. SQL server数据缓存依赖有两种实现模式,轮询模式, ...
- SQL数据查询之——单表查询
一.SQL数据查询的一般格式 数据查询是数据库的核心操作.SQL提供了SELECT语句进行数据查询,其一般格式为: SELECT [ALL | DISTINCT]<目标列表达式>[,< ...
- sql server字符串的类型
sql server字符串分为不同的类型,下面就将为您介绍几个sql server字符串的常见类型,希望对您学习sql server字符串能有所帮助. nchar 此数据类型可存储1~4000个定长U ...
- SQL中字符串截取、连接、替换等函数的用法
一.SQL中SUBSTRING函数的用法1.功能:返回字符.二进制.文本或图像表达式的一部分2.语法:SUBSTRING ( expression, start, length )3.QL 中的 su ...
随机推荐
- java的字体的颜色,型号,大小的方法
jTextPane1.setForeground(Color.green);//设置java字体的颜色 设置字体的颜色和型号和大小 jTextPane1.setFont(new Font(&quo ...
- SpringMVC基础入门
一.SpringMVC基础入门,创建一个HelloWorld程序 1.首先,导入SpringMVC需要的jar包. 2.添加Web.xml配置文件中关于SpringMVC的配置 1 2 3 4 5 6 ...
- div 加滚动条
div 加滚动条的方法: <div style="position:absolute; height:400px; overflow:auto"></div> ...
- BZOJ 1019: [SHOI2008]汉诺塔
Description 一个汉诺塔,给出了移动的优先顺序,问从A移到按照规则移到另一个柱子上的最少步数. 规则:小的在大的上面,每次不能移动上一次移动的,选择可行的优先级最高的. Sol DP. 倒着 ...
- thinkphp save()方法没有数据,保存失败解决办法
thinkphp save()方法没有数据保存返回0,保存失败返回false 可以对返回值判断一下就好 $ret = $model->save($data); //var_dump($ret ...
- TIMIT语音库
TIMIT语音库有着准确的音素标注,因此可以应用于语音分割性能评价,同时该数据库又含有几百个说话人语音,所以也是评价说话人识别常用的权威语音库,但该语音库的商业用途是要花钱买的.下面的资源来自与MIT ...
- Python分割list
对于一个很大的列表,例如有超过一万个元素的列表,假如需要对列表中的每一个元素都进行一个复杂且耗时的计算,用单线程处理起来会很慢,这时有必要利用多线程进行处理,处理之前首先需要对大的列表进行分割,分割成 ...
- win7下配置Apache本地虚拟主机
我们有时候从网上下载下来的php源码很多都是应用在网站根目录下的,而我们又想在本地先测试一遍确定没有问题了再上传空间,但一换到子目录下的时候因为路径问题,使得许多图片.内容都无法显示. 这个时候我们就 ...
- HTML文档中头部文件介绍
meta是用来在模拟HTTP协议的响应头报文.meta 标签用于网页的<head>与</head>中,meta 标签的用处很多.meta 的属性有两种:name和http-eq ...
- 时间和日期控件(Calendar1)
取得选择的: taskItem["data"] = Calendar1.SelectedDate.ToShortDateString();