SQL处理数组,字符串转换为数组
原文转载自:http://hi.baidu.com/gagahjt/item/fd081316450f05028ebde413
一、按指定符号分割字符串,返回分割后的元素个数,方法很简单,就是看字符串中存在多少个分隔符号,然后再加一,就是要求的结果。
rtrim(@str)去掉 @str右边的字符 ltrim(@str)去掉左边的字符 ltrim(rtrim(@str))去掉左右空格
charindex 在变量@str中@split的index即索引值
- create function Get_StrArrayLength
- (
- @str varchar(5000), --要分割的字符串
- @split varchar(10) --分隔符号
- )
- returns int
- as
- begin
- declare @location int
- declare @start int
- declare @length int
- set @str=ltrim(rtrim(@str))
- set @location=charindex(@split,@str)
- set @length=1
- while @location<>0
- begin
- set @start=@location+1
- set @location=charindex(@split,@str,@start)
- set @length=@length+1
- end
- return @length
- end
二、按指定符号分割字符串,返回分割后指定索引的第几个元素,象数组一样方便
- create function Get_StrArrayStrOfIndex
- (
- @str varchar(5000), --要分割的字符串
- @split varchar(10), --分隔符号
- @index int --取第几个元素
- )
- returns varchar(5000)
- as
- begin
- declare @location int
- declare @start int
- declare @next int
- declare @seed int
- set @str=ltrim(rtrim(@str))
- set @start=1
- set @next=1
- set @seed=len(@split)
- set @location=charindex(@split,@str)
- while @location<>0 and @index>@next
- begin
- set @start=@location+@seed
- set @location=charindex(@split,@str,@start)
- set @next=@next+1
- end
- if @location =0 select @location =len(@str)+1
- return substring(@str,@start,@location-@start)
- end
调用示例
- declare @str varchar(5000)
- set @str='1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48'
- print dbo.Get_StrArrayLength(@str,',')
- declare @next int
- declare @s varchar(100)
- set @next=1
- while @next<=dbo.Get_StrArrayLength(@str,',')
- begin
- print dbo.Get_StrArrayStrOfIndex(@str,',',@next) ----输出数组中的值
- set @next=@next+1
- end
三、检查一个元素是否在数组中
- Create function CheckStrInArr(@s as varchar(50),@sArr as varchar(5000)) returns int
- as
- begin
- declare @str varchar(5000)
- set @str=@sArr
- declare @next int
- declare @ret int
- set @ret=0
- set @next=1
- while @next<=dbo.Get_StrArrayLength(@str,',')
- begin
- if dbo.Get_StrArrayStrOfIndex(@str,',',@next)=@s
- begin
- set @ret=1;
- end
- set @next=@next+1
- end
- return @ret
- end
- -- =========调用示例========
- declare @a int
- set @a=dbo.CheckStrInArr('','2,3,5,8')
- select @a
- -- =========调用示例========
五 检查一个元素是否与数组中的相匹配
- --select dbo.CheckStrLikeInArr(2,'d','sde,df,aad,d,fgsa,fgd')
- Create function CheckStrLikeInArr
- (
- @liketype int=0, --like类型(0为为@keyword%,2为) 一般只用0
- @keyword as varchar(50), --要检查的关键字
- @sArr as varchar(5000) --数组
- )
- returns nvarchar(max)
- as
- begin
- declare @str varchar(5000)
- set @str=@sArr
- declare @start int
- declare @result nvarchar(max)
- set @result=''
- set @start=1
- declare @temp nvarchar(20);
- while @start<=dbo.Get_StrArrayLength(@str,',')
- begin
- if @liketype=0
- begin
- set @temp=dbo.Get_StrArrayStrOfIndex(@str,',',@start);
- if @temp like '%'+ @keyword+'%'
- begin
- set @result=@result+ @temp +',';
- end
- set @start=@start+1
- end
- else if @liketype=1
- begin
- if dbo.Get_StrArrayStrOfIndex(@str,',',@start) like ''+ @keyword +'%'
- begin
- set @result=dbo.Get_StrArrayStrOfIndex(@str, ',' , @start)+',';
- end
- set @start=@start+1
- end
- else if @liketype=2
- begin
- if dbo.Get_StrArrayStrOfIndex( @str, ',' , @start) like '%'+ @keyword+''
- begin
- set @result=dbo.Get_StrArrayStrOfIndex(@str, ',' , @start)+',';
- end
- set @start=@start+1
- end
- end
- return @result
- -- return cast(dbo.Get_StrArrayLength(@result,',')as nvarchar(2000))
- end
SQL处理数组,字符串转换为数组的更多相关文章
- JSon_零基础_008_将JSon格式的"数组"字符串转换为List集合
将JSon格式的"数组"字符串转换为List集合. 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“name.values”集合, ...
- JSon_零基础_007_将JSon格式的"数组"字符串转换为Java对象"数组"
将JSon格式的"数组"字符串转换为Java对象"数组". 应用此技术从一个json对象字符串格式中得到一个java对应的对象. JSONObject是一个“n ...
- PHP文本处理之中文汉字字符串转换为数组
在PHP中我们可以通过str_split 将字符串转换为数组,但是却对中文无效,下面记录一下个人将中文字符串转换为数组的方法. 用到的PHP函数 mb_strlen - 获取字符串的长度 mb_sub ...
- PHP文本处理 中文汉字字符串 转换为数组
在PHP中我们可以通过str_split 将字符串转换为数组,但是却对中文无效,下面记录一下个人将中文字符串转换为数组的方法. 用到的PHP函数 mb_strlen — 获取字符串的长度 functi ...
- 微信开发所需要的的方法(签名认证、数组转字符串方法、将xml字符串转换为数组、发送xml请求方法)
//将xml字符串转换为数组 public function xmlToArray($xml){ $array_data = json_decode(json_encode(simplexml_loa ...
- 什么是“类数组对象”,在jquer中怎样将类数组对象转换为数组对象
类数组对象的定义: 所谓"类数组对象"就是一个常规的Object对象,如$("div")但它和数组对象非常相似:具备length属性, 并以0.1.2.3……等 ...
- mysql里面如何用sql语句让字符串转换为数字
sql语句将字符串转换为数字默认去掉单引号中的空格,遇到空格作为字符串截止, SELECT '123 and 1=1' +0 结果为123 MySQL里面如何用sql语句让字符串的‘123’转换为数字 ...
- java将前端的json数组字符串转换为列表
记录下在前端通过ajax提交了一个json数组的字符串,在后端如何转换为列表. 前端数据转化与请求 var contracts = [ {id: '1', name: 'yanggb合同1'}, {i ...
- sql server将字符串转换为 uniqueidentifier 时失败
sql server查询中出现 将字符串转换为 uniqueidentifier 时失败异常 原因为id设置为uniqueidentifier 字段,在where查询时需要做转换cast(id as ...
随机推荐
- Ubuntu解压缩命令
原文链接:http://www.linuxidc.com/Linux/2012-08/68122.htm ZIP zip可能是目前使用得最多的文档压缩格式.它最大的优点就是在不同的操作系统平台,比如L ...
- November 1st 2016 Week 45th Tuesday
Difficult circumstances serve as a textbook of life for people. 艰难坎坷是人们的生活教科书. It would be better if ...
- c++设计模式之单例模式下的实例自动销毁(垃圾自动回收器)
关于C++单例模式下m_pinstance指向空间销毁问题,m_pInstance的手动销毁经常是一个头痛的问题,内存和资源泄露也是屡见不鲜,能否有一个方法,让实例自动释放. 解决方法就是定义一个内部 ...
- SSM整合(二):Spring4与Mybatis3整合
上一节测试好了Mybatis3,接下来整合Spring4! 一.添加spring上下文配置 在src/main/resources/目录下的spring新建spring上下文配置文件applicati ...
- Jenkins插件安装和系统配置
前面我们只是把Jenkins部署在Tomcat中了,下面来看看Jenkins中的插件和一些基础的系统配置. 1.用户管理 我们一般的项目组肯定是由多名成员组成的,如何向Jenkins添加我们的成员呢? ...
- 修改form表单的黄色背景
input:-webkit-autofill { -webkit-box-shadow: 0 0 0px 1000px white inset; }
- Keepalived的安装
Keepalived的安装 官网下载:点击直达 yum install -y libnl yum install -y libnl-devel 下载 cd /usr/local/src/ wget h ...
- Base64原理解析
一. Base64编码由来 为什么会有Base64编码呢?因为有些网络传送渠道并不支持所有的字节,例如传统的邮件只支持可见字符的传送,像ASCII码的控制字符就 不能通过邮件传送.这样用途就受到了很大 ...
- python基础补漏-03-函数
函数:一般来说就是 以功能划分的代码模块 [1] 内置函数 一般我们使用的模块 ---可以大概有个了解 大多数的用法都很简单 2 [函数返回值] 我们应该控制函数的每条分支. 也就是说 我们得到的函数 ...
- 手机GUI自动化测试工具选择
(Graphical User Interface,简称 GUI,又称图形用户接口) 我们需要针对自身产品的需求,从中选取一款合适的工具来实现自动化.对于移动客户端GUI的自动化而言,需要保证选取的工 ...