2

我必须针对完全笨拙的 Where/In 子句测试我的 Select 语句返回。我敢肯定,要检查数万个数字可能会更糟,但这对我来说看起来很糟糕,尽管它确实有效。

Where p.description Like '%UbD%'
  Or pa.text Like '%UbD%'
And p.state_code_id IN ('1','2','3','4','5','6','7','8','9','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31','32','33','34','35','36','37','38','39','40','41','42','43','44','45','46','47','48','49','50','65')

我怎样才能让语句检查'1-50','65'之类的东西?可能吗?我正在使用甲骨文。

4

5 回答 5

3

尝试这个:

Where p.description Like '%UbD%'
  Or pa.text Like '%UbD%'
  And ((p.state_code_id BETWEEN 1 AND 50) OR p.state_code_id = 65)
于 2013-07-08T21:53:47.587 回答
1
 AND ((p.state_code BETWEEN 1 AND 50) OR p.state_code = 65)
于 2013-07-08T21:54:17.853 回答
1

不更改查询,但使其更易于维护。将数据放入表中并使用子查询...

Where p.description Like '%UbD%'
  Or pa.text Like '%UbD%'
And p.state_code_id IN (SELECT ID FROM States)
于 2013-07-08T21:54:57.833 回答
0

假设状态代码为正且没有 0,您可以使用:

AND (p.state_code_id <= 50
     OR p.state_code_id = 65)
于 2013-07-08T21:54:05.683 回答
0

如果您的代码始终相同,请按照其他人所说的去做。如果它们不同,则创建一个临时表。将所有想要的值插入到新的(临时表)中,并在两者上进行连接

SELECT p.* 
FROM p, temp 
WHERE p.description Like '%xyz%' AND p.state_code == temp.code
于 2013-07-08T21:55:07.557 回答