记录在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 || ]')
答案 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