2017-02-27 11 views
0

同じSPからすべての顧客または1つの顧客を選択したいとします。今、我々はこれらの詳細を取得するには2つのSPをmantainingされていますMy SQL:where文の条件を追加しますか?

すなわち、すべての顧客を取得するには、次の

select id, name from customers 

をし、一人の顧客を取得する:

select id, name from customers 
where id=id_from_input 

彼らが共通にするためには、私は考えますすべての顧客を獲得するにはid_from_inputをnullとして処理します。私はいくつかの方法は、この計画で動作する私のSQLでステートメントを条件を作成しようとしましたが、何も動作していません。例:

私に構文エラーがあります。

id_from_inputがヌルの場合はすべての行を返すwhere節を作成するにはどうすればよいですか?

SELECT id, name FROM customers WHERE id = CASE WHEN ISNULL(id_from_input,'') 
<> '' THEN id_from_input ELSE id END 
+0

' CASE:

select id, name from customers where id_from_input is null or id = id_from_input 

以上の簡潔な(と私見エレガントな)何かのため

。 – Hexxed

答えて

1

x <> nullが真決して表現してみてください。 nullをテストする場合はis nullまたはis not nullしか使用できません。あなたの試みを修正することはできます:クエリのための `IF`構文ですWHEN`

select id, name from customers 
where id = coalesce(id_from_input, id) 
+0

これは正常に動作します。 Perectの答え。 – maverick

1

ユースケースステートメント。

0

orを使用してみてください:

select id, name 
from customers 
where id_from_input is null or id = id_from_input 

id_from_inputがnullの場合、or句は計算されません、あなたの結果を達成するために

0

このクエリ

select id, name from customers where CASE WHEN id_from_input<>null THEN id=id_from_input ELSE id END

関連する問題