У меня есть простая инструкция SQL для возврата данных продукта. В принципе, я могу ввести имя элемента, если элемент точно соответствует, а затем ничего не делать, если нет совпадений для точного запроса, я хочу переключить оператор «WHERE» в моем SQL. В настоящее время это выглядит так:Как использовать CASE in Где состояние Oracle SQL?
SELECT
Product_ID,
Product_Name,
Product_Type,
Product_Cost
FROM tblProducts
WHERE Product_Name = 'iPhone'
Это, очевидно, будет точно возвращать продукты под названием «iPhone». iPhone 5 не будет возвращен.
То, что я пытаюсь сделать, если запрос выбирает 0 строк, используя первое Where
положение, то он запускает вторую where
положения, которое было бы что-то вроде:
WHERE Product_Name like '%iPhone%'
Так что, если нет продуктов называемый точно iPhone, возвращать любые продукты, у которых iPhone есть где-то на свое имя.
Я хочу, чтобы отобразить это на панели результатов запроса, поэтому, пытаясь создать дополнительное поле на выходе, это своего рода флаг, чтобы сказать «если второе предложение Where использовало заданное значение в 1». Где 1 = нет точного соответствия, 0 = точный спичка
Так я бы в конечном итоге с чем-то вроде:
ID Name Type Cost Matched
-----------------------------------------------
101| New iPhone Case| Electronics | 4.99 | 1
До сих пор у меня есть:
SELECT
Product_ID,
Product_Name,
Product_Type,
Product_Cost
CAST(0 AS VARCHAR2(1)) as match
FROM tblProducts
WHERE Product_Name = 'iPhone'
Но не могу работать, как сделайте случай переключателя на ГДЕ, чтобы проиллюстрировать:
SELECT
Product_ID,
Product_Name,
Product_Type,
Product_Cost
CAST(0 AS VARCHAR2(1)) as match
FROM tblProducts
WHERE Product_Name = 'iPhone'
if (results = 0){
SELECT
Product_ID,
Product_Name,
Product_Type,
Product_Cost
CAST(1 AS VARCHAR2(1)) as match
FROM tblProducts
WHERE Product_Name like '%iPhone%'
}
Любые идеи о том, как я мог бы достичь его?