0

私が持っているとしましょう

 SELECT A,B FROM T1 WHERE A=X and B=Y;

私がphpと一緒に設定した方法では、Aおよび/またはBで検索する選択肢を与えているので、XとYが空である可能性があることを知っています.Aだけが与えられたとしましょう。 A=X のすべてのタプルを返す必要がありますか? SQL用の「空白」関数はありますか?

4

5 に答える 5

1

2つの検索パラメーターXおよび/またはYが与えられた場合、withを使用ORIS NULLていずれかのパラメーターで検索できます。

SELECT A,B 
FROM T1 
WHERE (X IS NULL OR A=X) AND
    (Y IS NULL OR B=Y)
于 2013-03-23T01:45:08.090 に答える
1

AまたはBのデータがNULL値にならないことがわかっている場合は、この種のものを使用できます。また、これらの列のどちらもNULL値にならないことがわかっている場合は、if関数でNULL値を変更できます。

MySQL:

    SELECT A,B FROM table where A=IF('X' <> '', X, NULL) OR B=IF('Y' <> '', Y, NULL)

SQLサーバー:

    SELECT A,B FROM table where A=IIF('x' <> '', X, NULL) OR B=IIF('Y' <> '', Y, NULL)

PHPを介してクエリを配信する場合の別の方法は、Aが存在する場合にBのAND / OR句を含めないことです。つまり、次のようになります。

$ querystr = "SELECT A、B FROM table WHERE"。($ a!= ""? "A = $ a": "")。($ b!= ""? "B = $ b")

于 2013-03-23T01:45:35.830 に答える
1

以下は、AまたはBのいずれかがNULL(入力されていない)であるか、AとBの両方が定義したものと等しいすべての行を返します。

SELECT A, B FROM T1 WHERE (A IS NULL or A=X) and (B IS NULL or B=Y);

他に何か探している場合は、質問を明確にしてください。

于 2013-03-23T01:46:49.920 に答える
1

私はあなたがかどうかを確認しようとしていると思いますA IS NULL

したがって、SQLクエリ全体は次のようになります。

SELECT A, B FROM T1 WHERE (A=X OR A IS NULL) AND (B=Y OR B IS NULL);

テーブルの列Aがオプションの場合、この列に値を追加せずに、新しいレコードを挿入したり、既存のレコードを更新したりできます。これは、フィールドがNULL値で保存されることを意味します。NULLは、不明な値または適用できない値のプレースホルダーとして使用されます。

詳細:MySQLNULL値

于 2013-03-23T01:48:51.430 に答える
1

つまり、

 SELECT A,B 
   FROM T1 
   WHERE (A=X or X is null)
     and (B=Y or Y is null)
     and not(A is null and B is null);
于 2013-03-23T01:50:43.507 に答える