regexp_like表达式不适用于变量

时间:2014-05-09 15:17:47

标签: oracle

记录在errors字段中没有任何内容。注释掉的代码不会返回任何内容,但是当使用变量时,它会返回一条记录。我做错了什么?

test varchar(5);
test := '1';
select  * from timedetail 
where empnum = '013061361' and tsdate = '1-nov-13' 
--and  regexp_like(errors, '[1,0]')
and  regexp_like(errors, '[ || test || ]')

2 个答案:

答案 0 :(得分:0)

你没有变量:'[||测试|| ]'是一个字符串。 你需要这个'['||测试|| ']'

答案 1 :(得分:0)

Oracle regexp_like使用单引号分隔表达式。要使用变量,您需要将正则表达式元字符与变量隔离开,因此只需将各个部分连接起来即可完成要求。使用'i'选项是忽略大小写。

尝试一下:

   test varchar(5);
   test := '1';

 select  * from timedetail 
  where empnum = '013061361' 
    and tsdate = '1-nov-13' 
    and  regexp_like(errors, test,'i'); --matches any string containing 1
--and  regexp_like(errors,'^' ||  test,'i') --matches any string beginning 1
--and  regexp_like(errors, test || '$','i') --matches any string ending 1
--and  regexp_like(errors, '^' || test || '$','i') --matches any string exactly 1