2016-07-24 8 views
0
私は次のSQLクエリを書くことができますどのように

を構築:動的SQLおよび文の

'Select * 
from Address 
where cityname like %1 
and zipcode = %2' 

郵便番号はオプションですか?

郵便番号はurlqueryから照合されます。したがって、空であるか、有効な郵便番号である可能性があります。

空( '')の場合、クエリはすべての行を返す必要があります。空でない場合は、クエリの追加 'and'パラメータとして機能する必要があります。

+3

単純なif文はどうですか?それが空の場合 - %1のようなcitynameのアドレスからSelect *を選択します。空でない場合 - > Select * from cityname%1と​​zipcode =%2のような住所 – Danieboy

+0

@Danieboyもちろん私はこの姿勢も考え出しました。私はSQLクエリを書くのは大丈夫ですが、セキュリティに関してはそれほど良くありません。私の関心事は注射などです。動的にさらにパラメータを追加する場合は、パラメータを渡してSQL文をサーバに送信する前にプログラミング言語で準備する必要があります – JohnDoe

答えて

1
SELECT * 
FROM address 
WHERE cityname LIKE %1 
    AND zipcode = COALESCE(NULLIF(%2, ''), zipcode); 

%2が空の場合、NULLIFCOALESCEzipcodeを返し、条件がTRUEに評価され、NULLを返します。

関連する問題