powered by simpleCommunicator - 2.0.41     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / убрать NULL
12 сообщений из 12, страница 1 из 1
убрать NULL
    #39063024
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
убрать NULL
    #39063027
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
update MyTable set MyField = {} where MyField is Null


Как понимаю тип Date у поля, если другой то замени {} на "" или 0
...
Рейтинг: 0 / 0
убрать NULL
    #39063035
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
убрать NULL
    #39063037
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,

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

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

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

Полей несколько, разных типов, можно как-то одним запросом заменить все Null?
Ваш способ, я так понимаю действует отдельно для каждого поля?Прописать список полей.
вместо MyField = {} написать MyField1 = {}, MyField2 = {}, MyField3 = "" и т.д. Это так трудно узнать самому?Хотя, скорее всего вы так еще сильнее напортачите... Лучше так:
Код: sql
1.
update MyTable set MyField = isnull(MyField,{}),  MyField2 = isnull(MyField2,{}),  MyField3 = isnull(MyField3,"")
...
Рейтинг: 0 / 0
убрать NULL
    #39063049
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
убрать NULL
    #39063052
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Параметры перепутал, так надо
Код: sql
1.
update MyTable set MyField1 = nvl(MyTable.MyField1, {}), MyField2 = nvl(MyTable.MyField2, ""), MyField3 = nvl(MyTable.MyField3, 0)
...
Рейтинг: 0 / 0
убрать NULL
    #39063059
nikomp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima T,
Получилось вроде, СПАСИБО!
...
Рейтинг: 0 / 0
убрать NULL
    #39066948
Pulsar_p
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В свое время так извращался. В качестве параметра в процедуру передается имя таблицы, далее происходит цикл по полям. Все 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
убрать NULL
    #39072581
Durex_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
nikomp,
если просто не хочет видеть, то SET NULLDISPLAY TO ""
но это не изменит значения в полях. Только отображение.
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / убрать NULL
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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