![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Update Null полей [D7, FireBird 1.5]
Надежда © (2007-04-14 21:00:00)Уважаемые прграммисты!
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-20 11:26:00) [1]do nottreat
stakan (2007-04-20 11:24:00) [2]
> Вот только выполнить этот совет не получится ... нужно на IS NULL проверять.
Так вроде Oracle как раз это и рекомендует.
Desdechado (2007-04-20 11:01:00) [3]> Oracle recommends that you do not treat empty strings the same as nulls
Вот только выполнить этот совет не получится, т.к. сравнение с пустой строкой в WHERE не приводит к выборке пустых строк, нужно на IS NULL проверять.
stakan (2007-04-20 09:44:00) [4]
> Это разные вещи. А то что кое-кто их не различает, так это
> проблема (а м.б. счастье? ) того самого кое-кого...:)
Соглашусь с Вами:
(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.)
Johnmen (2007-04-19 19:18:00) [5]Это разные вещи. А то что кое-кто их не различает, так это проблема (а м.б. счастье? ) того самого кое-кого...:)
stakan (2007-04-19 18:50:00) [6]
> '' и NULL - разные вещи... :)
Эт смотря для какой СУБД.
Ega23 (2007-04-19 10:27:00) [7]'' и NULL - разные вещи... :)
Надежда (2007-04-19 00:31:00) [8]Johnmen, спасибо, наконец-то получилось
Johnmen (2007-04-15 15:43:00) [9]Типа того
SQLQuery2.Params[i].Value:=MySQLQuery1.Fields[3].Value
Надежда (2007-04-15 01:20:00) [10]
> Desdechado © (14.04.07 23:03) [4]
</I
>
Тогда все равно нужно проверку ведь сделать, чтобы Params[i].Clear сделать?
if not MySQLQuery1.Fields[3].isnull then
SQLQuery2.Params[i].Clear
Так?
Desdechado (2007-04-14 23:03:00) [11]> Не знаю правильно ли?
Т.е. если поле пустое, обновлять не надо? Или надо на NULL? Тогда нужно Params[i].Clear сделать.
Надежда (2007-04-14 22:56:00) [12]
> 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+'''');
.....
Не знаю правильно ли?
MsGuns (2007-04-14 22:32:00) [13]Если статически, то [1]. Пример:
UPDATE TABLE G1=NULL, G2=NULL...
Если динамически, то через параметры
Desdechado (2007-04-14 21:15:00) [14]так и записать - NULL