惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

U
Unit 42
博客园 - 司徒正美
V
Visual Studio Blog
博客园 - 【当耐特】
T
Tailwind CSS Blog
美团技术团队
博客园 - 叶小钗
Jina AI
Jina AI
宝玉的分享
宝玉的分享
IT之家
IT之家
Hugging Face - Blog
Hugging Face - Blog
雷峰网
雷峰网
Stack Overflow Blog
Stack Overflow Blog
博客园_首页
人人都是产品经理
人人都是产品经理
T
The Blog of Author Tim Ferriss
P
Proofpoint News Feed
Microsoft Security Blog
Microsoft Security Blog
Y
Y Combinator Blog
GbyAI
GbyAI
大猫的无限游戏
大猫的无限游戏
Martin Fowler
Martin Fowler
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
腾讯CDC

博客园 - 桦林

博客园发展的一些思路 [原] 自定义条件公式和计算公式的动态配置计算器的示例 [原] JsTree.js [原]常用sqlserver数据库使用sql语句 Net框架下-ORM框架LLBLGen的简介 [摘]各种开源协议 [原]JS方法按Json数据的某一字段排序 FOR XML AUTO将数据库表的一个字段的数据查询拼接为带间隔符的字符串 sql带分隔符的字符串截取 查询表字段、类型、是否主键的sql脚本 [转]Internet数据库连接器(IDC)技术 [原]用WebBrowser组件模拟人工运行搜索引擎自动点击搜索结果的实验 [摘]什么是CDN? [摘]网洛管理员应该具备哪些知识和技能 [摘]什么是SEM [摘]淘宝网的开源架构 Opera:发现浏览器安全漏洞后做什么 我的Silverlight初探 2008年末纪念:回顾改变Web的十大事记 Spry框架实现XML分页[原]
sql处理带分隔符的字符串数据
桦林 · 2011-04-25 · via 博客园 - 桦林

Posted on 2011-04-25 18:26  桦林  阅读(5578)  评论()    收藏  举报

--獲取被分隔符分割開來的字符串中參數的個數

CREATE function GetStrArrayLength
(
 
@str varchar(1024),  --要分割的字符串
 @split varchar(10)  --分隔符号
)
returns int
as
begin
 
declare @location int
 
declare @start int
 
declare @length intset @str=ltrim(rtrim(@str))--剔除字符串的首尾空格

 
set @location=charindex(@split,@str)--第一個分隔符在字符串中的索引數字  例如'a1,b2,c3,d4'中第一個','的位置索引

 
set @length=1--字符串被分隔符分割開來的參數個數,這裡初始化為一個

 
while @location<>0 --如果字符串中還存在分隔符那麼該分隔符在字符串中的索引就不會為0,也就是不等於0
 begin
   
set @start=@location+1 --從第一個分隔符索引位置後的字符串中開始檢索,檢索的起始是第一個分隔符後的一位開始
   set @location=charindex(@split,@str,@start)
   
set @length=@length+1
 
end
 
return @length
end
---------------------------------------

--获得带分隔符的字符串中指定索引对应的间隔项
creat FUNCTION dbo.f_GetStr(
    
@s varchar(8000),      --包含多个数据项的字符串
    @pos int,             --要获取的数据项的位置
    @split varchar(10)     --数据分隔符
)RETURNS varchar(1000)
AS
BEGIN
    
IF @s IS NULL RETURN(NULL)
    
DECLARE @splitlen int
    
SELECT @splitlen=LEN(@split+'a')-2
    
WHILE @pos>1 AND CHARINDEX(@split,@s+@split)>0
        
SELECT @pos=@pos-1,
            
@s=STUFF(@s,1,CHARINDEX(@split,@s+@split)+@splitlen,'')
    
RETURN(ISNULL(LEFT(@s,CHARINDEX(@split,@s+@split)-1),''))
END--------------------------------------------------------------

获得指定索引对应的间隔开来的单项字符数据
create function GetStr
(
 
@str varchar(1024),  --要分割的字符串
 @split varchar(10),  --分隔符号
 @index int --取第几个元素
)
returns varchar(1024)
as
begin
 
declare @location int
 
declare @start int
 
declare @next int
 
declare @seed intset @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