5

データベース クエリに関するいくつかのクエリ:

したがって、次のデータベース クエリがあります。これには、3 つの文字列変数 (rackingSystem、manufacturer、「Amber Risk」) を含む WHERE ステートメントがあります。

public Cursor fetchComponentsAndSpecForManufacturer(long inspectionId, String rackingSystem, String manufacturer) {
    Cursor mCursor =
            rmDb.query(true, DAMAGED_COMPONENTS_TABLE, new String[] {
                    DAMAGED_COMPONENT_ID,
                    LOCATION_LINK,
                    RUN_LINK,
                    AREA_LINK,
                    INSPECTION_LINK,
                    LOCATION_REF,
                    RACKING_SYSTEM,
                    COMPONENT,
                    COMPONENT_TYPE,
                    QUANTITY,
                    POSITION,
                    RISK,
                    ACTION_REQUIRED,
                    NOTES_GENERAL,
                    MANUFACTURER,
                    TEXT1,
                    TEXT2,
                    TEXT3,
                    TEXT4,
                    NOTES_SPEC,
                    SPEC_SAVED}, 
                    INSPECTION_LINK + " = " + inspectionId + " AND " + RACKING_SYSTEM + " = ? AND " + MANUFACTURER + " = ? AND " + RISK + " = ? ", 
                    new String[] {rackingSystem, manufacturer, "Amber Risk"},
                    COMPONENT_TYPE + ", " + TEXT1 + ", " + TEXT2 + ", " + TEXT3 + ", " + TEXT4 + ", " + NOTES_SPEC,
                    null, null, null);
    if (mCursor != null) {
        mCursor.moveToFirst();
    }
    return mCursor;
}

質問1:

上記の例では、manufacturer がデータベース内で NULL である可能性があるため、NULL を検索するにはどうすればよいですか (ユーザーがそのビットのデータベースにまだ何も入力していない可能性があるため)。

質問2:

WHERE ステートメントに OR ステートメントを含めることはできますか? そのため、現時点では「アンバー リスク」のすべてのレコードを検索していますが、このリストには「レッド リスク」のエントリも含める必要があります。これができる場合、WHERE ステートメントをどのように編集すればよいですか?

4

1 に答える 1

8

上記の例では、メーカーがデータベースで NULL である可能性があるため、NULL を検索するにはどうすればよいですか

を使用しMANUFACTURER + " IS NULL"ます。

WHERE ステートメントに OR ステートメントを含めることはできますか?

はい。null または空の製造元を検索してみましょう。

MANUFACTURER + " IS NULL OR " + MANUFACTURER + " = ''"

そのため、現時点では「アンバー リスク」のすべてのレコードを検索していますが、このリストには「レッド リスク」のエントリも含める必要があります。

INSPECTION_LINK + " = " + inspectionId + " AND " + RACKING_SYSTEM + " = ? AND " + 
        MANUFACTURER + " IS NULL AND (" + RISK + " = ? OR " + RISK + " = ?)", 
new String[] {rackingSystem, manufacturer, "Amber Risk", "Red Risk"},
于 2013-01-05T19:03:40.450 に答える