を持つすべてのレコードを選択パラメータがNULL(または好きな場合は0)の場合は、すべてのレコードが必要です。 つまり、私はWHERE句でCASEを考えることができません。SQL私は、パラメータp_user_idに等しいuser_idのフィールドを持つテーブルTのすべてのレコードを選択したい私は、ストアドプロシージャを持つフィールドセットまたはnull
2
A
答えて
2
SELECT * FROM T
WHERE user_id = p_user_id
OR p_user_id is null
OR p_user_id = 0
p_user_idがで最もデータベースは任意の行(sybaseは例外ですが)一致しない結果になりますどのnullの場合はここで
句user_id = p_user_id
はUNKNOWNに同一視されます。
2
SELECT * FROM T WHERE user_id = p_user_id or p_user_id is null or p_user_id = 0;
0
SELECT * FROM T WHERE user_id = @p_user_id OR @p_user_id IS NULL
OR句のパラメータが(NULL IS NULL == TRUE)NULLのとき真である
0
私が正しく理解していれば、あなたはこの希望: "
IF p_user_id IS NULL
(SELECT * FROM T);
ELSE
(SELECT * FROM T WHERE user_id = p_user_id)
関連する問題
- 1. SQLが表示される一つのテーブルからすべてのレコードを選択し、<私は2つのテーブル持っている別の
- 2. 、私は、次のフィールドを持つテーブルを持って一緒に
- 3. テーブル名をパラメータとして持つストアドプロシージャ
- 4. 今、私はこれをサンプリングしたい..私は値のセットを持つテーブルを持っているpostgreSQLの
- 5. は、私は以下のフィールドを持つ分析テーブルを持っている
- 6. MySQLのクエリは、私は2つのSQLテーブル テーブル名持た
- 7. 私はここにストアドプロシージャを持つストアドプロシージャ
- 8. フォームは、私がCheckboxSelectMultipleウィジェットを使用している選択フィールドを持つフォームを持っている
- 9. コンパウンドSQL私は、次の2つのテーブルを持っている
- 10. 私はテーブルを持っているすべての月で特定のカラムに対してnull以外の値を持つテーブルからレコード
- 11. は、私がnull値を持つすべてのフィールドを取得したいが、私もすべてのフィールドを取得aintの反射
- 12. 私は2つのテーブルを持つテーブル
- 13. は、私は4つのテーブル持っているSQL Server 2008の
- 14. T-SQL:私はテーブルを持っている場合は、列
- 15. は、私はフィールドを持つuserテーブルを持つデータベースを持っている既存のユーザーデータベース
- 16. T-SQL:1つの以上の行を持って選択したパーティション
- 17. SQL - 個別の行を選択し、私は2つのテーブルを持っているデータ
- 18. は、私はSQL Server 2005と私はストアドプロシージャ名を格納する列を持つテーブルのいずれかでを使用していますストアドプロシージャ
- 19. MySQLの:私は私のSQL DBに2つのテーブルを持っている
- 20. SQL Serverの私は、データを持つテーブルを持っている特定の行
- 21. symfonyのフォームEntityTypeは、私はタイプEntityTypeのフィールドを持つフォームを持っている選択肢
- 22. MySQLの2つのテーブルは、私はテーブルを持っている
- 23. 私はこのモデルを持っているカスタムクラスを持つレコードを作成し、
- 24. SQLの私は、テーブルtbl_test持つ問題
- 25. 別のテーブルに挿入し、私は、クエリを持って選択
- 26. 複数のテーブルからの選択に、私はSQLiteのDBで2つのテーブルを持っている、との両方が、次のフィールドを持つ重複
- 27. は、私はこのコードを持って選択した項目
- 28. 私はこのようなレコードを持つテーブルを持っている5最新のSQL Serverの
- 29. Androidのsqliteのは、私は、私が選択したい列を含む文字列配列を持つString []型
- 30. SQL - このように、私は数百の列を持つ2つのテーブルを結合したいキー
をp_user_idがnullの場合、user_id = p_user_id節は常にfalseになります。 " - いいえ、UNKNOWNでなくてはならず、区別が重要です。もしそれがFALSEなら、全ての 'CHECK'制約は、明示的に処理されない限り、' NULL'値を拒絶するでしょう。 – onedaywhen
...これはあなた自身が投稿したリンクにはっきりと明記されています: "TRUEの値を返す列のみが選択されたり、指定された動作になります; FALSEまたはUNKNOWNを返す列はありません... NULLが指定された値または別のNULLと等しいかどうかを判別することは不可能であるため、NULL値の比較はUNKNOWNです。 – onedaywhen
@onedaywhenありがとうございました。あなたの提案に基づいて改訂しました。 – krock