Страница 1 из 1
Как в запросе select проверить наличие blob ?
Добавлено: 25 дек 2006, 23:07
3m
Здравствуйте!
Есть таблица, один из столбцов blob, возникла необходимость в запросе select получать наряду с данными информацию о том пуст blob или нет.
Пока я придумал только один рабочий вариант - с использованием функции BlobSize из библиотеки FreeUDFLib, т.е. так:
Код: Выделить всё
SELECT name, param1, param2,...paramN, F_BLOBSIZE(audiodata) FROM mytable WHERE id=N
Смущает два момента: надо скачивать и устанавливать FreeUDFLib; размер blob мне знать не требуется, достаточно просто знать что audiodata IS NOT NULL.
Можно ли как-то более изящно решить данную задачу?
Добавлено: 26 дек 2006, 00:35
DS
SELECT name, param1, param2,...paramN, IIF(audiodata IS NULL, 'yes', 'no') isnull
FROM mytable WHERE id=N
iif кажись в только в fb2 появилось, в более ранних смотри в сторону CASE
Добавлено: 26 дек 2006, 01:42
3m
DS писал(а):SELECT name, param1, param2,...paramN, IIF(audiodata IS NULL, 'yes', 'no') isnull
FROM mytable WHERE id=N
iif кажись в только в fb2 появилось, в более ранних смотри в сторону CASE
У меня FB 1.5.3 - iif не работает.
CASE заработал:
Код: Выделить всё
SELECT name, param1, param2,...paramN,
case
when audiodata IS NOT NULL THEN 1
ELSE 0
END
FROM mytable WHERE id=N
.
Есть еще вариант в разбивкой на два запроса:
Код: Выделить всё
/* 1 получаем данные */
SELECT name, param1, param2,...paramN FROM mytable WHERE id=N
/* 2 проверяем наличие blob */
SELECT COUNT(audiodata) FROM mytable WHERE id=N
Хотя COUNT везде ругают за "тяжеловесность", но в моем случае всегда берется только 1 строка.
Добавлено: 26 дек 2006, 08:12
Dimitry Sibiryakov
Я не понял, а почему бы не писать просто SELECT ..., audiodata.... а потом на клиенте проверять FieldByName('audiodata').IsNull? Слишком умные компоненты?
Добавлено: 26 дек 2006, 12:13
3m
Dimitry Sibiryakov писал(а):Я не понял, а почему бы не писать просто SELECT ..., audiodata.... а потом на клиенте проверять FieldByName('audiodata').IsNull? Слишком умные компоненты?
Именно так.
Использую IBPP - он сам проверяет тип и обойти это нет возможности без глубокой рихтовки исходников IBPP.
Добавлено: 26 дек 2006, 13:46
Dimitry Sibiryakov
Проверяет тип и что? Автоматически вытаскивает содержимое в память? Не верю...