高手,在sql语句里如何提取出分隔符前后的字符???不要太长的。 5

如:字符串:ajhdjsahj,asdhajshd,kafkas(,为分隔符)我要提取某个分隔符后的字符串,如asdhajshd但我不知道截取的字符串长度。... 如:字符串:ajhdjsahj,asdhajshd,kafkas(,为分隔符) 我要提取某个分隔符后的字符串,如asdhajshd 但我不知道截取的字符串长度。 展开
 我来答
yew259
推荐于2018-04-16 · 超过13用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:29.2万
展开全部
create FUNCTION f_STR(
@s varchar(100), --待分拆的字符串
@split varchar(1), --分隔符
@count int--第几个
)RETURNS varchar(20)
AS
BEGIN
declare @curr int,@re varchar(20)
set @s=@s+@split
set @curr=0
while @curr<>@count
begin
set @s=SUBSTRING(@s,(CHARINDEX(@split,@s)+1),(len(@s) -(CHARINDEX(@split,@s))))
set @curr=@curr+1
end
set @re=SUBSTRING(@s,1,(CHARINDEX(@split,@s) -1))
return @re
END

select dbo.f_STR('123,yu,33',',',0)
select dbo.f_STR('123,yu,33',',',1)
select dbo.f_STR('123,yu,33',',',2)
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
星辰大海byj
2012-10-31 · TA获得超过1020个赞
知道小有建树答主
回答量:993
采纳率:100%
帮助的人:528万
展开全部
oracle写个函数Split_Str_Get_One( 'aaa,bbb,ccc', ',', 1)
第一个参数是你的字符串,第二个参数是分隔符,第三个参数是你要取第几个子字符串,函数定义如下:
CREATE OR REPLACE FUNCTION Fun_Split_Str_Get_One
(
p_str VARCHAR2, --原始字符串
p_delim VARCHAR2, --分割字符串
p_offset NUMBER --子字符串偏移量
) RETURN VARCHAR2 AS
v_result VARCHAR2(128);
BEGIN
/*SELECT column_value
INTO v_result
FROM (SELECT rownum rn, column_value
FROM TABLE(CAST(Fun_Split_Str_To_Table(p_str, p_delim) AS t_vc)))
WHERE rn = p_offset and rownum=1;*/
IF p_offset <= 0 THEN
RETURN '';
END IF;
IF p_offset = 1 THEN
SELECT substr(p_str, 1,
decode(instr(p_str, p_delim, 1, 1), 0, length(p_str),
instr(p_str, p_delim, 1, 1) - 1))
INTO v_result
FROM dual;
ELSE
IF instr(p_str, p_delim, 1, p_offset - 1) = 0 THEN
v_result := '';
ELSE
SELECT substr(p_str, instr(p_str, p_delim, 1, p_offset - 1) + 1,
decode(instr(p_str, p_delim, 1, p_offset), 0, length(p_str),
instr(p_str, p_delim, 1, p_offset) - 1) -
instr(p_str, p_delim, 1, p_offset - 1))
INTO v_result
FROM dual;
END IF;
END IF;
RETURN v_result;
EXCEPTION
WHEN no_data_found THEN
v_result := '';
RETURN v_result;
END;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
fengdao_123
2012-10-31 · 超过54用户采纳过TA的回答
知道小有建树答主
回答量:103
采纳率:100%
帮助的人:97.7万
展开全部
SELECT CHARINDEX(',','kjdfkj,kjdfkjdf,kdjfkj')
返回值就是整数7。
这代表,逗号在第七个字符的位置。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式