如何从string到where子句获取比较运算符

时间:2014-09-04 09:02:00

标签: sql oracle

我在参考表中有数据,如< 55,> 60(等),在源代码中,值将为40,70(等)。因此,基于参考值,我必须检查条件。

示例;

如果值参考表是< 55

我在where子句中的条件是40 <55

如果> 70

我在where子句中的条件是

40→60

actaully我正在检查不同文件上的多重条件在哪里...这将是与AND的条件之一。

你能告诉我处理它的方法。

提前致谢

1 个答案:

答案 0 :(得分:0)

SQL> column str format A10;
SQL> WITH ref_data
  2       AS (SELECT '<55' VAL
  3           FROM   dual
  4           UNION ALL
  5           SELECT '>60' val
  6           FROM   dual),
  7       source_data
  8       AS (SELECT 40 VAL
  9           FROM   dual
 10           UNION ALL
 11           SELECT 70 VAL
 12           FROM   dual)
 13  SELECT CASE
 14           WHEN B.val < To_number(Regexp_substr(A.val, '[[:digit:]]+')) THEN B.val
 15                                                                             ||'<'
 16                                                                             ||
 17         Regexp_substr(A.val, '[[:digit:]]+')
 18           ELSE B.val
 19                ||'>'
 20                ||Regexp_substr(A.val, '[[:digit:]]+')
 21         END str
 22  FROM   ref_data A,
 23         source_data b;

STR
----------
40<55
70>55
40<60
70>60

SQL>