Использование функции CAST

Иногда возникает потребность трактовать значение одного типа как значение другого типа. Например, использовать числовое значение как символьную строку или наоборот. В этом случае применяют функцию

CAST (<значение> AS <тип данных>)

Функция CAST делает копию значения, преобразуя его к указанному типу данных. При этом не следует забывать о множестве типов данных, в которое может быть преобразовано данное значение:

Пример. Найти покупателя, который делал закупки то ли на 209, то ли на 309 единиц товара. На сколько именно, никто не помнит; вспомнили лишь, что последними разрядами в количестве отпускаемого товара были цифры '09'. Тогда приводим значения столбца KOLVO к типу CHARACTER и к результату применяем LIKE

Пример. Выдать все покупки товара за 20 число (предположим, каждого месяца). В InterBase нет встроенных функций для разделения даты на число, месяц и год. Варианты решения:

• в приложении, разработанном на Delphi, анализировать даты при помощи процедуры DecodeDate;

написать UDF (User Defined Function, определенную пользователем функцию), которая реализует выделение номера дня из даты, и использовать имя этой функции в операторе SELECT;

• привести значение даты к типу CHAR (или, что лучше, трактовать значение даты как строковое значение) и применить к полученному значению LIKE, CONTAINING или STARTING WITH, в зависимости от потребности.

Воспользуемся последним способом:

SELECT DAT_RASH, TOVAR, POKUP, KOLVO FROM RASHOD.

WHERE CAST(DAT_RASH AS CHAR(6)) STARTING WITH "20"

ЗАМЕЧАНИЕ. Значение типа DATE не нужно приводить к строковому типу, поскольку два этих типа являются совместимыми и значение DATE в InterBase может трактоваться как строковое, следовательно в данном примере можно устранить ненужное приведение типов:

SELECT DAT_RASH, TOVAR, POKUP, KOLVO

FROM RASHOD WHERE DAT_RASH STARTING WITH "20"

(Предполагается, что формат задания даты – день.месяц.год)


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: