如何检查varchar是否为数字或包含Oracle表单中的任何特殊字符。
我尝试使用以下代码,但它给出了逻辑错误
declare
v_valid varchar2(15);
begin
v_valid := :HEADERS.REFERENCE ;
If NOT v_valid IN ('0','1','2','3','4','5','6','7','8','9') then
message('Characters or Special Symbols are not allowed here');
end if;
end;
答案 0 :(得分:4)
尝试将其转换为数字并捕获异常。
vVarchar varchar2(15) := '15';
nNumber number;
BEGIN
nNumber := to_number(vVarchar);
message('Success!!');
EXCEPTION WHEN VALUE_ERROR THEN
message('Characters or Special Symbols are not allowed here');
END;
这实际上就是你正在做什么 If v_valid NOT Between '0' AND '9' then
你会遇到很多输入这样的问题:'2aas', '9&%$'
考虑将:HEADERS.REFERENCE
更改为对象属性中的数字,应该更容易。
答案 1 :(得分:-1)
我能够解决它。这是代码
declare
v_valid varchar2(15);
begin
v_valid := :HEADERS.REFERENCE ;
If v_valid NOT Between '0' AND '9' then
message('Characters or Special Symbols are not allowed here');
end if;
end;