0

値を持つ 4 つのコンボ ボックスがあり、ワイルドカード '%' を使用することもできます。ご存じのとおり、NULL 値は返されません。

(COLUMN_NAME LIKE 'VALUE' OR COLUMN_NAME IS NULL) を使用しましたが、何らかの方法で機能しましたが、必要なものではありません。この場合、たとえば NULL 値も返す必要があります。

NAME = '%'
LASTNAME = '%'
ZIPCODE = '12345'
EMAIL = '%'

基本的に、「12345」のようなすべての ZIPCODE と、他の 3 つ (NAME、LASTNAME、EMAIL) からの null 値を返すようにします。

私が明確であるかどうかわかりません:(

そうでない場合は、お知らせください。

どうすればこれを達成できますか? 前もって感謝します。

4

3 に答える 3

2

SQL ステートメントで LIKE 演算子を使用します。データベースに応じて、NVL、ISNULL、IFNULL を使用します。

オラクル; NVL(NAME,' ') LIKE '%'
MSSQL; ISNULL(LASTNAME,' ') LIKE '%'
MySQL; IFNULL(EMAIL,' ') LIKE '%'

そして、準備済みステートメントを使用します。文字列値をマージして SQL ステートメントを作成しないでください。SQL インジェクションを防ぎます。

于 2013-03-18T21:19:51.310 に答える
1

値が何であるかを気にせnullず、それがそうであるかどうかも気にしない場合は、where 句に列を含めないでください。

where zipcode = '12345'

また、「%」値は、ユーザーがその値で検索しないことを選択した結果であると推測しています。おそらくJavanullまたは空の文字列「」を使用して、プログラムでそれを別の方法で表現します。そのため、「%」は、SQLの「like」where句フラグメントで意味するものに近いものを意味できます-以外の任意の値null.

于 2013-03-18T20:43:28.373 に答える
0

これはあなたが探しているものですか-

    (lastname_col like :lastname or :lastname = '%' ) and 
    (zipcode_col like :zipcode or :zipcode = '%' ) and  
    and so on

上記のSQLは、:zipCodeが「12345」で残りの値がnullの場合でも、結果を提供するはずです。

于 2013-03-18T20:52:54.620 に答える