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 ...
随机推荐
- C/C++相对论——C++中为什么要使用异常?
C++中为什么要使用异常? 很多人也许知道C++中的异常机制,很多人也许不知道.很多人知道C中常用的assert,也知道在编译时候指定NODEBUG来忽略它. 对于C语言,使用正常的if-else即是 ...
- Python自动化之配置Python模块国内镜像
Linux环境 在~/.pip/pip.conf文件中添加或修改 [global] index-url = http://mirrors.aliyun.com/pypi/simple/ [instal ...
- C# XML和实体类之间相互转换(序列化和反序列化)
我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. using System; using System.Collections.Ge ...
- IntelliJ IDEA License Server本地搭建教程
Licence地址直接填入 http://idea.qinxi1992.cn/ http://jetbrains.tencent.click 直接破解 本地教程: 2016年3月20日更新支持自定义端 ...
- Arp攻击实战
hyddd原创,转载请说明出处. 现在网上很多关于ARP攻击的文章,但多数是描述其原理,少数会以某个工具作为例子展开说明,但感觉说的还是不够详细,今天写个文章以实战介绍一个叫"WinArpA ...
- HTML——meta标签
<meta> 元素可提供有关页面的元信息(meta-information),比如针对搜索引擎和更新频度的描述和关键词. <meta> 标签位于文档的头部,不包含任何内容.&l ...
- default constructor,copy constructor,copy assignment
C++ Code 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 ...
- Failed to issue method call: Unit httpd.service failed to load: No such file or directory.
centos7修改httpd.service后运行systemctl restart httpd.service提示 Failed to issue method call: Unit httpd.s ...
- ios 修正waring:Method override for the designated initializer of the superclass '-init' not found
swift引入后,为了使oc和swift更相近,对oc的初始化方法也进行了修正,具体说明,见下面的链接,这个waring的最简单的修正方法是,到相应类的头文件中,去掉在自定义初始化方法后面的 NS_D ...
- SAP 透明表之间的关联字段
VTTK-TPLST=TTDST-TPLST(装运点的关联表及描述表字段TTDST-BEZEI) VTTK-ROUTE=TVROT-ROUTE(装运线路关联表及描述表字段TVROT-BEZEI) VT ...