sql 中如何用select语句提取第N个"|"和第N+1个"|"中的值

例:1081||04401453|||8038000823|||A36490|803800|720402||1|17.90|0|0|0|0|0||||0|||||||||... 例:
1081||04401453|||8038000823|||A36490|803800|720402||1|17.90|0|0|0|0|0||||0||||||||||||||||0.90|17.00||

1081|||||8055000314|||A07060|805500|702701||1|0.90|0|0|0|0|0||||0||||||||||||||||0|0.90||

要select以上几个字符串第10个"|"和第11个"|"中的数据有办法吗?如果select不行的话还有什么方法?谢谢各位!
展开
 我来答
chn7576
2010-08-31 · TA获得超过1520个赞
知道小有建树答主
回答量:934
采纳率:0%
帮助的人:794万
展开全部
asp似乎有 split函数,

values[i] = split(field,'|')

这样来获取数据
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wenhongl
2010-08-20 · TA获得超过196个赞
知道小有建树答主
回答量:412
采纳率:0%
帮助的人:400万
展开全部
--建立分割函数

Create FUNCTION [dbo].[SplitToTable]
(
@SplitString nvarchar(max),
@Separator nvarchar(10)=' '
)
RETURNS @SplitStringsTable TABLE
(
[id] int identity(1,1),
[value] nvarchar(max)
)
AS
BEGIN
DECLARE @CurrentIndex int;
DECLARE @NextIndex int;
DECLARE @ReturnText nvarchar(max);
SELECT @CurrentIndex=1;
WHILE(@CurrentIndex<=len(@SplitString))
BEGIN
SELECT @NextIndex=charindex(@Separator,@SplitString,@CurrentIndex);
IF(@NextIndex=0 OR @NextIndex IS NULL)
SELECT @NextIndex=len(@SplitString)+1;
SELECT @ReturnText=substring(@SplitString,@CurrentIndex,@NextIndex-@CurrentIndex);
INSERT INTO @SplitStringsTable([value]) VALUES(@ReturnText);
SELECT @CurrentIndex=@NextIndex+1;
END
RETURN;
END

go

select * from [dbo].[SplitToTable](
'1081||04401453|||8038000823|||A36490|803800|720402||1|17.90|0|0|0|0|0||||0||||||||||||||||0.90|17.00||','|')
where id=3
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式