Дополнительное условие

<< Click to Display Table of Contents >>

Navigation:  Анализ данных > Фильтрация >

Дополнительное условие

Узел "Дополнительно" в диалоге фильтрации позволяет задавать произвольные условия отбора данных с использованием синтаксиса SQL (условие добавляется в Where-секцию SQL-запроса). Дополнительное условие представляет собой логическое выражение, возвращающее ИСТИНУ или ЛОЖЬ, и в простейшем случае может выглядеть следующим образом:

Поле Отношение Значение.

Для добавления поля фильтруемой таблицы можно использовать меню "Поле", расположенное над редактором текста.

 

 

Список операторов отношения представлен в следующей таблице.

 

Оператор

Описание

=

Равно

<>

Не равно

>

Больше

<

Меньше

>=

Больше или равно

<=

Меньше или равно

 

Кроме того, используются следующие выражения.

 

Выражение

Описание

Значение Is Null

Возвращает ИСТИНУ, если значение не определено.

Значение Is Not Null

Возвращает ИСТИНУ, если значение определено.

Значение Like Маска

Возвращает ИСТИНУ, если значение удовлетворяет маске.

Маска может содержать специальные символы ‘_’, и ‘%’.

‘_’ заменяет один произвольный символ.

‘%’ заменяет любое количество произвольных символов.

Например, маска ‘А%’ соответствует всем строкам, начинающимся с символа ‘А’.

Значение Not Like Маска

Возвращает ИСТИНУ, если значение не удовлетворяет маске.

 

Более сложные условия фильтрации задаются с использованием скобок и операторов AND и OR. Например, условие

{Баланс.Сумма} < 5 or {Состояние ТА.Ошибка} > ''

отобразит в списке торговых автоматов лишь те автоматы, баланс SIM-карт которых меньше 5 рублей или которые находятся в состоянии ошибки.

 

При необходимости можно выполнять арифметические операции над числовыми полями таблицы, объединять строковые поля и выражения ('ab' || 'cd' = 'abcd'), а также вызывать функции SQL. Список некоторых функций, поддерживаемых СУДБ Firebird, приводится ниже.

 

Функция

Описание

Пример

Общие функции

Coalesce(Значение1,  Значение2)

Если Значение1 определено, возвращает Значение1. В противном случае возвращает Значение2.

Coalesce(Null, 'Не определено') =

‘Не определено’

Функции работы с числами

Round(Число, Округление)

Возвращает результат округления числа до заданного количества знаков после запятой. Если количество знаков отрицательное, округление производится до заданного количества знаков перед запятой.

Round(123.456, 2) = 123.46

Round(123.456, 0) = 123

Round(123.456, -2) = 100

Функции работы со строками

Trim(Значение)

Удаляет пробелы в начале и в конце значения.

Trim(‘   Эспрессо   ’) = ‘Эспрессо’

Char_Length(Значение)

Возвращает длину значения.

Char_Length(‘Эспрессо’) = 8

Функции работы с датами

current_date

Возвращает текущую дату.

current_date = ’05.09.2011’

current_time

Возвращает текущее время.

current_time = ’12:05:59’

current_timestamp

Возвращает текущие дату и время

current_timestamp =

‘05.09.2011 12:05:59’

Extract (ЧастьДаты From Значение)

Возвращает составляющую даты из Значения.  

ЧастьДаты может принимать следующие значения:

YEAR - год;

MONTH - месяц (1-12);

DAY - день месяца (1-31);  

HOUR - час суток (0-23);

MINUTE - минута (0-59);

SECOND - cекунда (0-59.9999);  

WEEKDAY - день недели (0-6, начиная с воскресенья);

YEARDAY - день года (1-366).

extract(month from

cast('01.09.2011' as timestamp)) = 9

DateAdd(ЧастьДаты, Число, ДатаВремя)

Возвращает ДатуВремя, увеличенную на заданное количество единиц времени.

ЧастьДаты может принимать следующие значения: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND.

DateAdd(DAY, 4,

cast('01.09.2011' as TimeStamp))=

= '05.09.2011'

DateDiff(ЧастьДаты, Дата1, Дата2)

Возвращает разницу между датами Дата2 и Дата1 в выбранных единицах времени. ЧастьДаты может принимать следующие значения: YEAR, MONTH, DAY, HOUR, MINUTE, SECOND, MILLISECOND.

DateDiff(DAY,

cast('01.09.2011' as Timestamp), cast('05.09.2011' as Timestamp)) = 4

 

Для получения более полной информации о функциях и SQL-синтаксисе СУБД Firebird можно использовать, например, следующее руководство в Интернете: http://firebirdsql.su.

 

Существует возможность использовать в условии фильтрации атрибуты документов и элементов справочников, на которые ссылаются записи исходной таблицы. Предположим, что в списке ТА необходимо отобразить лишь те автоматы, которые могут готовить более 15 типов напитков. Заметим, что в исходной таблице содержится лишь наименование модели ТА, но не содержится количество типов напитков. Вызовем пункт меню Поле > Дополнительно, в открывшемся диалоге отобразятся атрибуты торгового автомата. Некоторые из атрибутов торгового автомата (например, "Модель ТА") являются ссылками на какой-либо справочник (например, "Модели ТА") и предоставляют доступ к атрибутам этого справочника (например, "Наименование", "Производитель", "Количество напитков").

 

 

Выберем узел Торговые автоматы > Модель ТА > Количество напитков и нажмём OK; при этом в редактор дополнительного условия фильтрации добавится определение выбранного нами поля ([Модель ТА -> Количество напитков]). Окончательное условие фильтрации будет выглядеть следующим образом:

[Модель ТА -> Количество напитков] > 15.

Степень вложенности атрибутов, к которым предоставляет доступ диалог "Вставка поля таблицы", может быть произвольной.