Regex_like - 将比较字符串作为查询传递 - Oracle

时间:2013-05-29 01:14:31

标签: oracle plsql oracle11g plsqldeveloper

我有下表:

SrNo   Name
------------
 1     TOM
 2     JOHN
 3     HENRY

运行以下查询:

SELECT * FROM MYTABLE WHERE regexp_LIKE (NAME, '^(TO|HEN)')

给出输出:

SrNo   Name
------------
 1     TOM    
 3     HENRY

如果我运行查询:

SELECT * FROM MYTABLE WHERE REGEXP_LIKE (NAME, SELECT '^(' || 'TO' || '|' || 'HE' || ')' FROM DUAL )

我收到错误

ORA-00936: missing expression

如何正确传递查询以使此REGEXP_LIKE正常工作?

谢谢, 莫妮卡

1 个答案:

答案 0 :(得分:3)

您只需要使用括号括起子查询以使其正常工作。以下查询应该有效:

SELECT * 
FROM MYTABLE 
WHERE REGEXP_LIKE (NAME, (
  SELECT '^(' || 'TO' || '|' || 'HE' || ')' FROM DUAL
) );

这里有一个SQLFiddle:http://sqlfiddle.com/#!4/072da/3