Plsql 如何限制特殊字符<;及>;输入列的值

Plsql 如何限制特殊字符<;及>;输入列的值,plsql,Plsql,我不太会使用正则表达式。我希望该用户不应为包含“”的列提供值 问候,, Sachin使用组()和或|运算符来验证您应该执行的用户输入: set serveroutput on; declare l_value varchar2(32767) := '<p>test and data</p>'; begin if regexp_like(l_value,'(<|>)','i') then dbms_output.put_line('invalid

我不太会使用正则表达式。我希望该用户不应为包含“”的列提供值

问候,, Sachin

使用组
()
和或
|
运算符来验证您应该执行的用户输入:

set serveroutput on;
declare
  l_value varchar2(32767) := '<p>test and data</p>';
begin
  if regexp_like(l_value,'(<|>)','i') then
    dbms_output.put_line('invalid');
  else
      dbms_output.put_line('valid');  
  end if;
end;
/
打开服务器输出;
声明
l_值varchar2(32767):=“测试和数据”;
开始
如果regexp_喜欢(l_值,,(),,i'),那么
dbms_output.put_行('invalid');
其他的
dbms_output.put_行('valid');
如果结束;
结束;
/

祝你好运。

使用
[
]
定义一组要匹配的字符,例如
[abc]
[a-z]
[a-z0-9.

select string
     , case
          when regexp_like(string,'[<>]') then 'Invalid'
          else 'Valid'
       end as test
from  
       ( select '<p>text</p>' as string from dual union all
         select 'text' from dual );

STRING           TEST
---------------- -------
<p>text</p>      Invalid
text             Valid
被拒绝的原因:

ORA-02290: check constraint (MYRIAD_OWNER_82.MYTABLE_LTGT_CHK) violated
如果您还想排除方括号,那将是:

constraint mytable_symbol_chk check ( not regexp_like(col,'[][<>]') );
constraint mytable_symbol_chk检查(不像regexp(col,[]]);
或没有任何正则表达式:

constraint mytable_symbol_chk check ( col = translate(col,'[]<>','.') )
constraint mytable\u symbol\u chk检查(col=translate(col,“[]”,“.”)

哇!!非常感谢,这是准确的。我在尝试什么不。。再次感谢。您好,如果我在您的有效大小写字符串中使用<或>,它仍然显示为有效,但现在应该变为无效。@SachinVaidya请注意,在提供的示例中,有效大小写被注释掉了,因此,我必须编辑答案以防止歧义解释。其他变奏曲也会像威廉·罗伯逊所说的那样有效。谢谢!非常感谢。抱歉误解了。这也很有帮助。如果我不需要“[”或“]”符号怎么办?^在这种情况下会有帮助吗?您的意思是要检查文本是否包含符号
[
]
?只需将它们包含在正则表达式中。嗨,我想要的是,我想对列值设置一个约束,以允许它们包含除<或>之外的所有内容。所以我尝试了一些类似于,altertablemytable添加约束“mytable_CHK”检查((REGEXP_-like(col,^’(),'I'))。但不确定它是否会以这种方式工作。在我的答案中添加了检查约束示例。谢谢!非常感谢您也添加了检查约束示例。
ORA-02290: check constraint (MYRIAD_OWNER_82.MYTABLE_LTGT_CHK) violated
constraint mytable_symbol_chk check ( not regexp_like(col,'[][<>]') );
constraint mytable_symbol_chk check ( col = translate(col,'[]<>','.') )