Topic: пустая строка в место NULL
SQLExecute('SELECT IFNULL(frm, "$00C08000") FROM color WHERE id=1')
проблема этого скрипта в том, что если поле пусто или отсутствует, то возвращается пустая строка а не NULL
помогите получить NULL
My Visual Database → Russian → пустая строка в место NULL
SQLExecute('SELECT IFNULL(frm, "$00C08000") FROM color WHERE id=1')
проблема этого скрипта в том, что если поле пусто или отсутствует, то возвращается пустая строка а не NULL
помогите получить NULL
Могу предложить пару вариантов:
Этот вариант вернет или значение из поля frm, или заранее указанное значение, если запись не будет найдена. Из минусов - выборка будет по всей таблице.
select distinct
(case
when ( select count(*) from color where id = 1 ) = 0 then '$00C08000'
else ( select frm from color where id = 1 )
end ) as ColorValue
from color
Этот вариант лучше по производительности, но в последнем условии нужно указать ID существующей записи.
select
(case
when ( select count(*) from color where id = 1 ) = 0 then '$00C08000'
else ( select frm from color where id = 1 )
end ) as ColorValue
from color where id = x
Кстати, последняя строка в обоих примерах может содержать обращение к любой таблице. Если у вас есть таблица с одной записью ( какой -нибудь config ), то она идеально подойдет.
Могу предложить пару вариантов
спасибо!
может написать функцию по типу iif у меня много подобных запросов
написал Функцию
iifNulZero(X,Y,Z);
X - условие выборки
Y - возвращаемый ответ если поле не найдено
Z - возвращаемый ответ если в поле пустая строка
iifNulZero('SELECT IFNULL(frm,"$00C08000") FROM color WHERE id=1', '$00C08000','$00C08000');
function iifNulZero (var X,Y,Z: string): string;
begin
if (SQLExecute('SELECT EXISTS('+X+')') <> '0') then
begin
if (SQLExecute(X) <> '') then Result:=SQLExecute(X) else Result:=Z;
end else Result:=Y ;
end;
begin
end.
My Visual Database → Russian → пустая строка в место NULL
Powered by PunBB, supported by Informer Technologies, Inc.
Theme Hydrogen by Kushi