Форум: "Базы";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
ВнизUpdate Null полей Найти похожие ветки
← →
Надежда (2007-04-14 21:00) [0]Уважаемые прграммисты!
Update полей с Null не проходит в FB.
В SQL Manager 2005 for FB делаю\:
update OBJ
set ID =221, OBJ ="XX5", I9 =0,
I10 =1, S9 ="uuuuu",
S10 ="gggg", D1 ="",
D2 ="", D3 ="",
D4 ="", D5 ="13.04.2007 13:19:36",
POINT_DATE ="14.04.2007 13:46:39",
D_ONLINE ="",
G1 =0, G5 =0
where ID =221
Ругается на замене полей D1,D2,D3,D4. Значения для этих полей выбираются из др. табл., имеют тип Datetime и знач. null.
Как Null - данные записать в FB?
Заранее спасибо за внимание.
← →
Desdechado © (2007-04-14 21:15) [1]так и записать - NULL
← →
MsGuns © (2007-04-14 22:32) [2]Если статически, то [1]. Пример:
UPDATE TABLE G1=NULL, G2=NULL...
Если динамически, то через параметры
← →
Надежда (2007-04-14 22:56) [3]
> MsGuns © (14.04.07 22:32) [2]
> Если статически, то [1]. Пример:UPDATE TABLE G1=NULL, G2=NULL.
> ..Если динамически, то через параметры
Делаю динамически и не получается, т.к. поля для update беру из selecta с MySQL, а там вместо null стоит "" у varchar-ов и ,, - у integerov.
Сделала так:
SQLQuery2.SQL.Clear;
SQLQuery2.SQL.Add("update RRR");
SQLQuery2.SQL.Add("set ID_nn ="""+MySQLQuery1.Fields[1].AsString+"""");
if not MySQLQuery1.Fields[2].isnull then
SQLQuery2.SQL.Add(", I9 ="+MySQLQuery1.Fields[2].AsString+"");
if not MySQLQuery1.Fields[3].isnull then
SQLQuery2.SQL.Add(", I10 ="+MySQLQuery1.Fields[3].AsString+"");
if not MySQLQuery1.Fields[4].isnull then
SQLQuery2.SQL.Add(", S9 ="""+MySQLQuery1.Fields[4].AsString+"""");
if not MySQLQuery1.Fields[5].isnull then
SQLQuery2.SQL.Add(", S10 ="""+MySQLQuery1.Fields[5].AsString+"""");
if not MySQLQuery1.Fields[6].isnull then
SQLQuery2.SQL.Add(", D1 ="""+MySQLQuery1.Fields[6].AsString+"""");
.....
Не знаю правильно ли?
← →
Desdechado © (2007-04-14 23:03) [4]> Не знаю правильно ли?
Т.е. если поле пустое, обновлять не надо? Или надо на NULL? Тогда нужно Params[i].Clear сделать.
← →
Надежда (2007-04-15 01:20) [5]
> Desdechado © (14.04.07 23:03) [4]
</I
>
Тогда все равно нужно проверку ведь сделать, чтобы Params[i].Clear сделать?
if not MySQLQuery1.Fields[3].isnull then
SQLQuery2.Params[i].Clear
Так?
← →
Johnmen © (2007-04-15 15:43) [6]Типа того
SQLQuery2.Params[i].Value:=MySQLQuery1.Fields[3].Value
← →
Надежда (2007-04-19 00:31) [7]Johnmen, спасибо, наконец-то получилось
← →
Ega23 © (2007-04-19 10:27) [8]"" и NULL - разные вещи... :)
← →
stakan © (2007-04-19 18:50) [9]
> "" и NULL - разные вещи... :)
Эт смотря для какой СУБД.
← →
Johnmen © (2007-04-19 19:18) [10]Это разные вещи. А то что кое-кто их не различает, так это проблема (а м.б. счастье? ) того самого кое-кого...:)
← →
stakan © (2007-04-20 09:44) [11]
> Это разные вещи. А то что кое-кто их не различает, так это
> проблема (а м.б. счастье? ) того самого кое-кого...:)
Соглашусь с Вами:(Oracle currently treats a character value with a length of zero as null. However, this may not continue to be true in future releases, and Oracle recommends that you do not treat empty strings the same as nulls.)
← →
Desdechado © (2007-04-20 11:01) [12]> Oracle recommends that you do not treat empty strings the same as nulls
Вот только выполнить этот совет не получится, т.к. сравнение с пустой строкой в WHERE не приводит к выборке пустых строк, нужно на IS NULL проверять.
← →
stakan © (2007-04-20 11:24) [13]
> Вот только выполнить этот совет не получится ... нужно на IS NULL проверять.
Так вроде Oracle как раз это и рекомендует.
← →
Desdechado © (2007-04-20 11:26) [14]do not treat
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2007.07.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.038 c