Выберите часть после WHERE в зависимости от параметра, переданного в SQL-запросе

Мне нужно подставить условия запроса для выбора количества записей в зависимости от переданного параметра

Пишу 2 запроса, а как в 1 совместить не знаю

если parent_uid равен нулю, мне нужно выполнить:

SELECT count(*) FROM TABLE WHERE 
parent_uid IS null AND name = 
:name AND tenant_uid = :tenant_uid;

еще:

SELECT count(*) FROM TABLE WHERE 
parent_uid = :parent_uid AND name = 
:name AND tenant_uid = :tenant_uid

Это псевдокод того, что мне нужно

IF parent_uid IS null 
THEN SELECT count(*) FROM TABLE WHERE parent_uid IS null AND name = :name AND tenant_uid = :tenant_uid

ELSE SELECT count(*) FROM TABLE WHERE parent_uid = :parent_uid AND name = :name AND tenant_uid = :tenant_uid END IF;
/**
 * returns the count of categories that contain all parameters passed
 * @param name category name
 * @parm parentUid parent category uid
 * @param tenantUid tenant uid
 * @return count of records
 */
public int checkCategoryUniqueName(UUID parentUid, String name, UUID tenantUid)
{
    MapSqlParameterSource map = new MapSqlParameterSource()
            .addValue(PARENT_UID_PARAMETER, parentUid)
            .addValue(NAME_PARAMETER, name)
            .addValue(TENANT_UID_PARAMETER, tenantUid);

    return jdbcTemplate.queryForObject(GET_ECATEGORY_COUNT, map , Integer.class);
}

🤔 А знаете ли вы, что...
Java обладает богатой стандартной библиотекой, включая коллекции, ввод/вывод, сетевые операции и многое другое.


1
75
2

Ответы:

Решено

Нет необходимости в "если".

WHERE (:parent_uid IS NULL AND parent_uid IS NULL) OR (parent_uid=:parent_uid)

Вам лучше создать правильную строку SQL на вашем языке (я думаю, Java).

String sqlParentUid = " parent_uid IS null "
if (parentUid != null) { // parentUid from function
    sqlParentUid = " parent_uid = " + parentUid.toString()
}

затем просто добавьте эту часть в базу sql и запустите запрос