我在数据表中有类似于</body> 的数值但是</body>无法在页面上显示,如何写一个函数可以调用时直接 select AAA(...查询语句)现在不知道如何写这个函数 替换如: <,>的字符串麻烦写一个函数谢谢!有一个oracle的示例函数,可供参考:CREATE OR REPLACE FUNCTION XSS(v_val IN varchar)
RETURN varchar IS
a_val varchar(4000);
BEGIN
a_val := v_val;
IF INSTR(a_val,'&') > 0 THEN
a_val := REPLACE(a_val,'&','&');
END IF;
IF INSTR(a_val,'<') > 0 THEN
a_val := REPLACE(a_val,'<','<');
END IF;
IF INSTR(a_val,'>') > 0 THEN
a_val := REPLACE(a_val,'>','>');
END IF;
IF INSTR(a_val,'"') > 0 THEN
a_val := REPLACE(a_val,'"','"');
END IF;
IF INSTR(a_val,'''') > 0 THEN
a_val := REPLACE(a_val,'''',''');
END IF;
RETURN a_val;
END;
RETURN varchar IS
a_val varchar(4000);
BEGIN
a_val := v_val;
IF INSTR(a_val,'&') > 0 THEN
a_val := REPLACE(a_val,'&','&');
END IF;
IF INSTR(a_val,'<') > 0 THEN
a_val := REPLACE(a_val,'<','<');
END IF;
IF INSTR(a_val,'>') > 0 THEN
a_val := REPLACE(a_val,'>','>');
END IF;
IF INSTR(a_val,'"') > 0 THEN
a_val := REPLACE(a_val,'"','"');
END IF;
IF INSTR(a_val,'''') > 0 THEN
a_val := REPLACE(a_val,'''',''');
END IF;
RETURN a_val;
END;
Returns varchar(1000)
As
Begin
Select @v_val = Replace(@v_val, '&','&')
Select @v_val = Replace(@v_val, '<','<')
Select @v_val = Replace(@v_val, '>','>')
Select @v_val = Replace(@v_val, '"','"')
Select @v_val = Replace(@v_val, '''''','''')
End
returns varchar(100)
as
begin
set @v_val=replace(replace(replace(replace(@v_val,'&','&'),'<','<'),'>','>'),'"','"')
return @v_val
end
Returns varchar(1000)
As
Begin
Select @v_val = Replace(@v_val, '&','&')
Select @v_val = Replace(@v_val, '<','<')
Select @v_val = Replace(@v_val, '>','>')
Select @v_val = Replace(@v_val, '"','"')
Select @v_val = Replace(@v_val, '''''','''')
Return @v_val
End
最后那个单引号的看不懂
------------
應該是將兩個單引號替換為一個
RETURNs varchar(8000)
as
BEGIN
IF charindex('&',@v_val) > 0
set @v_val := REPLACE(@v_val,'&','&') IF charindex('<',@v_val) > 0
set @v_val := REPLACE(@v_val,'<','<') IF charindex('>',@v_val) > 0
set @v_val := REPLACE(@v_val,'>','>') IF charindex('"',@v_val) > 0
set @v_val := REPLACE(@v_val,'"','"') IF charindex('''',@v_val) > 0
set @v_val := REPLACE(@v_val,'''','''''') RETURN @v_val
END
go
應該是將一個單引號替換為两個
-----------------------
IF INSTR(a_val,'''') > 0 THEN
a_val := REPLACE(a_val,'''',''');不可能吧,後面總共才3個單引號,怎麼替換為2個?