Галерея
7757 8119 8300 8698 8817 9504 9722 9937
Интересные записи
Топовые новости
Новое

Сравнение значений строк дат и времени

Сравнение значений строк дат и времениДля неопытного программиста операции сравнения строк и дат могут превратиться в кошмарный сон. Здесь главное помнить, что результат запроса, отображаемый на экране, не обязательно соответствует реально хранимым в таблице данным. К примеру, строки ‘wile bess company’ и ‘wile bess company ‘ (с дополнительным пробелом) на экране трудно отличить друг от друга; в то же время результат операции сравнения этих двух строк вернет значение FALSE, поскольку на самом деле эти строки не идентичны.

Еще одним хорошим примером может стать операция сравнения полей даты и времени. Рассмотрим следующую инструкцию Oracle, которая вычисляет текущую дату с использованием таблицы dual (о ней речь шла в предыдущих главах).

Причина в том, что фактическое значение sysdate имеет составляющие даты и времени, но по умолчанию на экране отображается только первая из них. Чтобы увидеть больше, нужно применить функцию to_Char, задав в качестве аргумента нужную маску. Приведем пример. На этот раз были эффективно исключены все записи, в которых общая стоимость заказа составила меньше 7500 долларов. Если же нужно включить в результаты запроса и пороговое значение 7500 долларов, необходимо применить оператор “больше или равно” (>=) или “меньше или равно” (<=). Данный вопрос вернул записи из представления V_CUSTOMER_TOTALS, которые меньше или равны 7538,20 долларов.

Чтобы найти заказы, размещенные всеми клиентами, кроме одного, нужно использовать оператор неравенства (!= или <>). Последний оператор не является стандартным, однако поддерживается всеми тремя ведущими СУБД. Как уже отмечалось, предложение WHERE — не единственное место, где можно использовать операторы сравнения. В главе 10 было описано выражение CASE, используемое в следующем запросе.