Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.015 c
15-1182611550
Nic
2007-06-23 19:12
2007.07.22
К примеру, написана книга


8-1162184711
Tab
2006-10-30 08:05
2007.07.22
какой способ рисования быстрее?


2-1182572094
Vladimir888
2007-06-23 08:14
2007.07.22
Прямое приведение


15-1182519740
Petr V.Abramov
2007-06-22 17:42
2007.07.22
Посоветйте книжку по Access для чайников


15-1182329521
Суслик
2007-06-20 12:52
2007.07.22
Коллекции рисунков на tool button ы




   Наверх