2017-02-09 4 views
0

Я новичок в SQL, поэтому, несмотря на поиск здесь и в Интернете, я не смог выяснить мою проблему. Мне нужно выбрать продукты, которые являются таблицами или столами, стоимость которых составляет более 300 долларов США, все остальное верно, но я возвращаю все суммы в долларах, а не только те, которые превышают 300 долларов.Предложение SQL LIKE не возвращает правильные значения

здесь является утверждение

SELECT ProductDescription, ProductFinish, ProductStandardPrice 
FROM product_t WHERE ProductDescription LIKE '%table%' OR ProductDescription LIKE '%desk%' 
AND ProductStandardPrice > 300; 
+0

'WHERE (ProductDescription LIKE '% таблица%' OR ProductDescription LIKE '% стол%') И ProductStandardPrice> 300' –

+0

вам не хватает брекеты или пара –

ответ

1

Несмотря на ваше форматирование, operator precedence означает, что ваш запрос интерпретируется следующим образом:

SELECT ProductDescription, ProductFinish, ProductStandardPrice 
FROM product_t WHERE ProductDescription LIKE '%table%' 
OR (ProductDescription LIKE '%desk%' AND ProductStandardPrice > 300); 

Если описание продукта содержит «стол», то он будет возвращен независимо от Цена. Для того, чтобы всегда проверить цену, просто вставьте круглые скобки соответствующим образом:

SELECT ProductDescription, ProductFinish, ProductStandardPrice 
FROM product_t WHERE (ProductDescription LIKE '%table%' OR ProductDescription LIKE '%desk%') 
AND ProductStandardPrice > 300; 
+0

спасибо, я ценю объяснение! –

+0

@ l.bol Если это решило вашу проблему, пожалуйста, [accept] (http://meta.stackexchange.com/q/5234/304954) ответ. – shmosel

Смежные вопросы