Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / убрать NULL / 12 сообщений из 12, страница 1 из 1
28.09.2015, 12:40
    #39063024
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
убрать NULL
есть таблица, как программно заменить все NULL на ''(пустоту)?

пробовал вот так
Код: pascal
1.
2.
3.
    ADOQuery2.SQL.Clear;
    ADOQuery2.SQL.Add('Alter table NPRIM alter Date not null');
    ADOQuery2.ExecSQL;



но это нужно делать по каждому столбцу, может есть более эффективный способ?

если при создании таблицы указать для полей NOT NULL при выполнении программы возникает ошибка
...
Рейтинг: 0 / 0
28.09.2015, 12:45
    #39063027
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
убрать NULL
Код: sql
1.
update MyTable set MyField = {} where MyField is Null


Как понимаю тип Date у поля, если другой то замени {} на "" или 0
...
Рейтинг: 0 / 0
28.09.2015, 12:56
    #39063035
убрать NULL
nikompесть таблица, как программно заменить все NULL на ''(пустоту)?

пробовал вот так
Код: pascal
1.
2.
3.
    ADOQuery2.SQL.Clear;
    ADOQuery2.SQL.Add('Alter table NPRIM alter Date not null');
    ADOQuery2.ExecSQL;



но это нужно делать по каждому столбцу, может есть более эффективный способ?С каких пор команда изменения типа стала менять содержимое значения, тем более при отсутствии правил неявной конвертации?
если при создании таблицы указать для полей NOT NULL при выполнении программы возникает ошибкаРазумеется, сами же поставили ограничение.
Вы с какого перепугу решили, что значения как-то сами будут меняться? И на что? Где-то как-то прописали какие-то значения для замены?
...
Рейтинг: 0 / 0
28.09.2015, 12:58
    #39063037
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
убрать NULL
Dima T,

Полей несколько, разных типов, можно как-то одним запросом заменить все Null?
Ваш способ, я так понимаю действует отдельно для каждого поля?
...
Рейтинг: 0 / 0
28.09.2015, 13:00
    #39063042
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
убрать NULL
правильный проходящий.,

подскажите как сделать?
я не спец в foxpro? таблицу данными заполнил, но заказчик не хочет видеть в них NULL
...
Рейтинг: 0 / 0
28.09.2015, 13:01
    #39063045
убрать NULL
nikompDima T,

Полей несколько, разных типов, можно как-то одним запросом заменить все Null?
Ваш способ, я так понимаю действует отдельно для каждого поля?Прописать список полей.
вместо MyField = {} написать MyField1 = {}, MyField2 = {}, MyField3 = "" и т.д. Это так трудно узнать самому?
...
Рейтинг: 0 / 0
28.09.2015, 13:04
    #39063046
убрать NULL
правильный проходящий.nikompDima T,

Полей несколько, разных типов, можно как-то одним запросом заменить все Null?
Ваш способ, я так понимаю действует отдельно для каждого поля?Прописать список полей.
вместо MyField = {} написать MyField1 = {}, MyField2 = {}, MyField3 = "" и т.д. Это так трудно узнать самому?Хотя, скорее всего вы так еще сильнее напортачите... Лучше так:
Код: sql
1.
update MyTable set MyField = isnull(MyField,{}),  MyField2 = isnull(MyField2,{}),  MyField3 = isnull(MyField3,"")
...
Рейтинг: 0 / 0
28.09.2015, 13:06
    #39063049
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
убрать NULL
nikompDima T,

Полей несколько, разных типов, можно как-то одним запросом заменить все Null?
Ваш способ, я так понимаю действует отдельно для каждого поля?
Сделай несколько запросов.
Можешь такой изврат попробовать
Код: sql
1.
update MyTable set MyField1 = nvl({}, MyTable.MyField1), MyField2 = nvl("", MyTable.MyField2), MyField3 = nvl(0, MyTable.MyField3)



Сразу не заметил это
nikompесли при создании таблицы указать для полей NOT NULL при выполнении программы возникает ошибка
Разбирайся лучше с этим. Ошибка говорит о том что программа кривая. Если поле должно быть NOT NULL то его надо делать NOT NULL, и программу писать так чтобы она не пыталась NULL в таблицу писать.
...
Рейтинг: 0 / 0
28.09.2015, 13:09
    #39063052
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
убрать NULL
Параметры перепутал, так надо
Код: sql
1.
update MyTable set MyField1 = nvl(MyTable.MyField1, {}), MyField2 = nvl(MyTable.MyField2, ""), MyField3 = nvl(MyTable.MyField3, 0)
...
Рейтинг: 0 / 0
28.09.2015, 13:17
    #39063059
nikomp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
убрать NULL
Dima T,
Получилось вроде, СПАСИБО!
...
Рейтинг: 0 / 0
02.10.2015, 12:17
    #39066948
Pulsar_p
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
убрать NULL
В свое время так извращался. В качестве параметра в процедуру передается имя таблицы, далее происходит цикл по полям. Все NULL'ы замещаются на "пустые" значения по умолчанию для этих полей. Самый главный недостаток: медленно работает. Использовал только на относительно небольших курсорах, тогда нормально.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
PROCEDURE NETNULLAM
    * Исправление значений nul на пустые значения
    PARAMETERS PRIEMBAZA && имя таблицы
    SELESELE=SELE()
    SELECT (PRIEMBAZA)
    FCOUFCOU=FCOUNT()
    FOR I=1 TO FCOUFCOU
        NAMEPOLE=FIELD(I)
        TYPEPOLE=TYPE(FIELD(I))
        DO CASE
            CASE TYPEPOLE=[C]
                UPDATE &PRIEMBAZA SET &NAMEPOLE=[] WHERE &NAMEPOLE IS NULL
            CASE TYPEPOLE=[D]
                UPDATE &PRIEMBAZA SET &NAMEPOLE={} WHERE &NAMEPOLE IS NULL
            CASE TYPEPOLE=[L]
                UPDATE &PRIEMBAZA SET &NAMEPOLE=.F. WHERE &NAMEPOLE IS NULL
            CASE TYPEPOLE=[N]
                UPDATE &PRIEMBAZA SET &NAMEPOLE=0 WHERE &NAMEPOLE IS NULL
        ENDCASE
    ENDFOR
    SELECT (SELESELE)
...
Рейтинг: 0 / 0
09.10.2015, 09:15
    #39072581
Durex_
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
убрать NULL
nikomp,
если просто не хочет видеть, то SET NULLDISPLAY TO ""
но это не изменит значения в полях. Только отображение.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / убрать NULL / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]