请教高手,帮忙转一个SQLSERVER的函数(100分)

mwq100 2008-12-24 04:38:58
ALTER FUNCTION [dbo].[TrimStartString](@TrimStr varchar(1024), @TrimChar varchar(1024))

RETURNS varchar(1024)

AS

BEGIN

declare @Len smallint
declare @Pos smallint

set @Len = Len(@TrimChar)
set @Pos = 1

while @Pos < Len(@TrimStr)
begin
if SubString(@TrimStr, @Pos, @Len) = @TrimChar
set @Pos = @Pos + @Len
else
break
end

return SubString(@TrimStr, @Pos, Len(@TrimStr))

END

------------------------------------------------------------------------------------------
公司要把server2005转入oracle,所以函数和过程都要重新写,我是刚刚学oracle所以请大虾帮帮忙。下面是我写了一小段但是总是报错,还希望给与指教

CREATE OR REPLACE FUNCTION TRIMSTARTSTRING
(
TrimStr IN varchar2,TrimChar IN varchar2, TrimOuer out VARCHAR2
)
Return
VARCHAR2(是这样写返回类型吗)
AS
v_Len NUMBER;
v_Pos NUMBER;

BEGIN
v_len := LENGTH(trimstr);
v_pos := 1;

......

END TRIMSTARTSTRING;
...全文
83 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tiger_hs 2008-12-24
  • 打赏
  • 举报
回复
SELECT REPLACE(TrimStr,TrimChar,'') into v v_trimstr from dual;
yf520gn 2008-12-24
  • 打赏
  • 举报
回复


create or replace function TRIMSTARTSTRING(TrimStr IN varchar2,TrimChar IN varchar2) return
varchar2 is
trimouter varchar2(1024);


len number;
pos number;
begin
len:=length(trimchar);
pos:=1;
while pos<length(trimstr) loop
begin
if substr(trimstr,pos,LEN )=trimchar then
pos:=pos+len;
else exit;
end if;

end;
end loop;
trimouter:=substr(trimstr,POS,length(trimstr));
return(trimouter);
end;
范佩西_11 2008-12-24
  • 打赏
  • 举报
回复
try
CREATE OR REPLACE FUNCTION TRIMSTARTSTRING(TrimStr  IN varchar2,
TrimChar IN varchar2)
RETURN varchar2 AS
v_Len NUMBER;
v_Pos NUMBER;
BEGIN
v_len := Length(TrimChar);
v_Pos := 1;
while v_Pos < Length(TrimStr) loop
if SubStr(TrimStr, v_pos, v_len) = TrimChar then
v_pos := v_pos + v_len;
else
exit;
end if;
end loop;
return SubStr(TrimStr, v_Pos, Length(TrimStr));
END;
yf520gn 2008-12-24
  • 打赏
  • 举报
回复
测试了!貌似会陷入死循环~~汗~
LZ想用这个函数做什么功能呢?
mwq100 2008-12-24
  • 打赏
  • 举报
回复
枫の叶:你是用什么工具写的
yf520gn 2008-12-24
  • 打赏
  • 举报
回复

--try it
create or replace function TRIMSTARTSTRING(TrimStr IN varchar2,TrimChar IN varchar2) return
varchar2 is
trimouter varchar2(1024);
len number;
pos number;
begin
len:=length(trimchar);
pos:=1;
while pos<length(trimstr) loop
begin
if substr(trimstr,pos,LEN )=trimchar then
pos:=pos+len;
end if;

end;
end loop;
trimouter:=substr(trimstr,POS,length(trimstr));
return(trimouter);
end;
mantisXF 2008-12-24
  • 打赏
  • 举报
回复
-- TRY IT ..
CREATE OR REPLACE FUNCTION TRIMSTARTSTRING(TRIMSTR IN VARCHAR2,
TRIMCHAR IN VARCHAR2)
RETURN VARCHAR2 IS
V_LEN NUMBER;
V_POS NUMBER;

BEGIN
V_LEN := LENGTH(TRIMCHAR);
V_POS := 1;

WHILE V_POS < LENGTH(TRIMSTR) LOOP
IF SUBSTR(TRIMSTR,V_POS,V_LEN) = TRIMCHAR THEN
V_POS := V_POS + V_LEN;
END IF;
END LOOP;

RETURN SUBSTR(TRIMSTR,V_POS,LENGTH(TRIMSTR));
END TRIMSTARTSTRING;
[Quote=引用楼主 mwq100 的帖子:]
ALTER FUNCTION [dbo].[TrimStartString](@TrimStr varchar(1024), @TrimChar varchar(1024))

RETURNS varchar(1024)

AS

BEGIN

declare @Len smallint
declare @Pos smallint

set @Len = Len(@TrimChar)
set @Pos = 1

while @Pos < Len(@TrimStr)
begin
if SubString(@TrimStr, @Pos, @Len) = @TrimChar
set @Pos = @Pos + @Len
else
break
end

return SubString(@Tri…
[/Quote]
taotie1225 2008-12-24
  • 打赏
  • 举报
回复
找zzzzz,帮顶了

17,377

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 基础和管理
社区管理员
  • 基础和管理社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧