2013-08-29 1 views
2

Я использую эту таблицу учебников, называемую практикой, с колонками DEPTNO DNAME LOC соответственно.Где предложение синтаксически правильно, но ничего не дает

10 ACCOUNTING NEW YORK 
20 RESEARCH DALLAS 
30 SALES  CHICAGO 
40 OPERATIONS BOSTON 

Учитывая этот запрос

select * from practice where loc = 'DALLAS' 

я получаю строку, что я ожидал, но играть вокруг, я также сделал этот запрос,

select * from practice where('LOC') = 'DALLAS' 

, и я ничего не получаю. Я не понимаю, этот последний запрос синтаксически действителен, я не получил никаких исключений, но все же получил пустой набор результатов набора. Делает where с () делать что-нибудь особенное?

ответ

7

выражение:

where('LOC') = 'DALLAS' 

сравнивает строку 'LOC' к строке 'DALLAS'. Они не совпадают.

выражение:

where loc = 'DALLAS' 

сравнивает столбец loc в строку 'DALLAS'. По-видимому, они иногда совпадают.

Одиночные кавычки связаны с проблемой. Скобки не имеют к этому никакого отношения. (Они делают что-то особенное, что не связано с вашей проблемой. Они группируют выражения для целей оценки.)

+0

Спасибо! Поэтому, чтобы уточнить, я подумал, что цель предложения 'where' - проверить значения столбца. Почему выражение 'where' должно использоваться для проверки отдельных строк? –

+0

@ EdgarAroutiounian. , , Предложение 'where' проверяет условия, которые вы вложили в него. На самом деле довольно часто приходится делать что-то вроде 'where v_city null или city = v_city', чтобы сравнить столбец' city' с переменной 'v_city'. Первая часть сравнивает два «постоянных» значения. –

+2

Предложение 'WHERE' просто проверяет булевские выражения, это могут быть условия для столбцов, но также могут быть более сложными условиями - или более простыми, например, сравнение строк. – FrankPl

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