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 に答える