powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вставить пустое поле как null
42 сообщений из 42, показаны все 2 страниц
Вставить пустое поле как null
    #33466119
Yorick.kiev.ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос такой - как сделать ,чтоб при изменении поля пустое значение(т.е. '') воспринималось сервером как NULL ?

В более общем виде задача стоит следующая.
В 4-й версии MySQL операция с полем f1 int
Код: plaintext
update t1 set f1=''
походила нормально(для меня, правда, загадкой остается почему 8)) ). В пятом - уже нет. Ну, при смене сервера, ясное дело, полезли грабельки... 8))

Если есть еще какие-нибуть идеи как это дело обойти буду благодарен.

P.S. Общаюсь с MySQL недавно, поэтому если что - просьба ногами не бить.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33466290
Еретик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorick.kiev.uaВопрос такой - как сделать ,чтоб при изменении поля пустое значение(т.е. '') воспринималось сервером как NULL ?

...
Если есть еще какие-нибуть идеи как это дело обойти буду благодарен.

P.S. Общаюсь с MySQL недавно, поэтому если что - просьба ногами не бить.

Если б не твой "P.S.", думаю, уже б побили :)

Ответ: Я не знаю такого сервера СУБД, который пустую строку приравнивает NULL - это принципиально невозможно, по определению. Это не Perl и не PHP.

Надо явно присваивать NULL при вставке или апдейте, и решать это на уровне приложения, а не MySQL.

В MySQL 5+ попробуй написать триггер или сохраненку, к примеру:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
CREATE TRIGGER mk_ins_NULL
BEFORE INSERT  ON tbl
FOR EACH ROW
SET NEW.fld1=IF (NEW.fld1='', NULL,NEW.fld1);

CREATE TRIGGER mk_upd_NULL
BEFORE UPDATE  ON tbl
FOR EACH ROW
SET NEW.fld1=IF (NEW.fld1='', NULL,NEW.fld1);

Или как-то еще ...

Только вопрос - это действительно надо?

не зря NULL<>'' в базе. Последствия от такой замены могут быть непредсказуемы... Например, тот, кто будет разбираться с твоим кодом, будет долго париться, откуда берутся NULL в базе...

Советую хорошо подумать, надо ли оно...
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33466315
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorick.kiev.ua , апдейт написан неправильно. Низачот.
------------------
- А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33466335
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЕретикЯ не знаю такого сервера СУБД, который пустую строку приравнивает NULL - это принципиально невозможно, по определению.
Oracle, видимо, Вы не знаете?
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33466641
Еретик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft ЕретикЯ не знаю такого сервера СУБД, который пустую строку приравнивает NULL - это принципиально невозможно, по определению.
Oracle, видимо, Вы не знаете?


miksoft, то есть в Oracle NULL и пустая строка - одно и то же?

Пример в студию, пожалуйста.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33466691
Фотография Dinky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorick.kiev.ua
В 4-й версии MySQL операция с полем f1 int
update t1 set f1=''
походила нормально(для меня, правда, загадкой остается почему 8)) ).
Позволю усомниться:
MySQL 4.0.18:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
root:test> desc ntest;
+-------+------------+------+-----+---------+-------+
| Field | Type       | Null | Key | Default | Extra |
+-------+------------+------+-----+---------+-------+
| f1    | int( 11 )    | YES  |     | NULL    |       |
| f2    | varchar( 5 ) | YES  |     | NULL    |       |
+-------+------------+------+-----+---------+-------+
 2  rows in set ( 0 . 00  sec)

root:test> insert into ntest set f1='', f2='';
Query OK,  1  row affected ( 0 . 00  sec)

root:test> select * from ntest;
+------+------+
| f1   | f2   |
+------+------+
|     0  |      |
+------+------+
 1  row in set ( 0 . 00  sec)

root:test> update ntest set f1='', f2='';
Query OK,  0  rows affected ( 0 . 00  sec)
Rows matched:  1   Changed:  0   Warnings:  1 

root:test> select * from ntest;
+------+------+
| f1   | f2   |
+------+------+
|     0  |      |
+------+------+
 1  row in set ( 0 . 00  sec)
Никаких нулов, однако ;)

Правильное решение для сабжа - пройдитесь grep-ом по коду и исправьте '' на DEFAULT, в 5м это работает и для UPDATE.
--
Dmitry
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33467330
Yorick.kiev.ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еретик
Если б не твой "P.S.", думаю, уже б побили :)

Ответ: Я не знаю такого сервера СУБД, который пустую строку приравнивает NULL - это принципиально невозможно, по определению


Чему равен null - вопрос, вообще говоря, философский.
В ms msql, к примеру, равен ли один null другому определяется отдельной командой.

В MySQL 5+ попробуй написать триггер или сохраненку, к примеру:
[/quot]

Триггер, разумеется, не пройдет, т.к. типы проверяются до insert.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33467350
Yorick.kiev.ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DinkyПозволю усомниться:
MySQL 4.0.18:
Dmitry

В чем, прошу прощения? Вы же сами показали, что запрос выполняется и идет вставка "0". Это меня тоже устроит.

Править код - это на крайний случай. Очень трудоемко - запросы-то формируются динамически, да и все равно что-то где-то упустишь.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33467399
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Отключите strict mode у пятого MySQL.
ЗЫ. А вообще, думать надо было, когда недокументированные особенности использовали.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33467608
Фотография Dinky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorick.kiev.uaЧему равен null - вопрос, вообще говоря, философский.
В ms msql, к примеру, равен ли один null другому определяется отдельной командой.

сорри, но глупости :) NULL не равен NULL - истино для любой нормальной БД ;) именно поэтому для проверки значения на NULL используется отдельная ф-ция.

--
Dmitry
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33467840
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еретик miksoft ЕретикЯ не знаю такого сервера СУБД, который пустую строку приравнивает NULL - это принципиально невозможно, по определению.
Oracle, видимо, Вы не знаете?


miksoft, то есть в Oracle NULL и пустая строка - одно и то же?

Пример в студию, пожалуйста.
если это будет достаточным примером, то вот:
Код: plaintext
1.
2.
3.
4.
SQL> select nvl2('', 1 , 2 ) from dual;

NVL2('', 1 , 2 )
------------
            2 

Oracle® Database SQL ReferenceNVL2 lets you determine the value returned by a query based on whether a specified expression is null or not null. If expr1 is not null, then NVL2 returns expr2. If expr1 is null, then NVL2 returns expr3.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33467853
Владимор Конев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еретикmiksoft, то есть в Oracle NULL и пустая строка - одно и то же?

Пример в студию, пожалуйста.Да пожалуйста:
Тынц №1 - Обсос того, что в Oracle пустая строка есть ничто иное как NULL
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33468354
Yorick.kiev.ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dinky
сорри, но глупости :) NULL не равен NULL - истино для любой нормальной БД ;)

Это глупости только в Вашем представлении. И так же, очевидно, ни ms sql, ни Oracle не есть "нормальными" БД.

Кстати, в Оракле, если не ошибаюсь, есть еще и логические операции с NULL. К примеру логическое "и" с нулом даст вовсе не NULL(что было бы логично).

Dinky
именно поэтому для проверки значения на NULL используется отдельная ф-ция.


Угу. например "=". 8))
"When ANSI_NULLS is OFF, comparisons such as ColumnA = NULL return TRUE when ColumnA contains a null value and FALSE when ColumnA contains some value besides NULL". BOL
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33468430
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorick.kiev.ua Dinky
сорри, но глупости :) NULL не равен NULL - истино для любой нормальной БД ;)

Это глупости только в Вашем представлении. И так же, очевидно, ни ms sql, ни Oracle не есть "нормальными" БД.


Эти глупости прописаны в стандарте sql. И кстати насчет sql server - читайте про set ansi_nulls, а для оракла NULL не равен NULL. В оракле трехзначная логика и NULL = NULL дает UNKNOWN
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33468433
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Yorick.kiev.ua

Угу. например "=". 8))
"When ANSI_NULLS is OFF, comparisons such as ColumnA = NULL return TRUE when ColumnA contains a null value and FALSE when ColumnA contains some value besides NULL". BOL

Вы путаете стандарт и реализацию. ак по вашему, что означает ansi_nulls? Вообще то это значит режим когда NULL трактуются по ANSI стандарту. А расширений над стандартом в любой dbms хватает. Только аргументом это быть не может.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33468993
Yorick.kiev.ua
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ох, вот за что я люблю наших людей...

Вроде и проблему описал четко и все понятно, ан нет, начались рассуждения о том, "как оно должно быть" и как это "должно быть" соответствует стандартам...
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33469526
Фотография Dinky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ничего себе "четко" - Вы сказали что Вам надо NULL в поле, когда вставляется пустая строка, и это работало в 4й версии. Оказалось:
1) не работало
2) NULL не надо
так к кому претензии? ;)

--
Dmitry
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33469537
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О как. А что надо? Я что-то утерял нить дискуссии...
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33469548
Фотография Dinky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2227381:
Yorick.kiev.uaВы же сами показали, что запрос выполняется и идет вставка "0". Это меня тоже устроит.

И ответ, собственно, уже прозвучал:
DocAlОтключите strict mode у пятого MySQL
;)

--
Dmitry
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33469556
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то похоже я в лужу сел)
Никого не забрызгало, надеюсь?)
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33471399
Еретик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
Операции сравнения в MySQL выполняются по следующим правилам: 

Если один или оба аргумента - NULL, то и результат сравнения будет NULL. 
Справедливо для всех операторов кроме <=>. 

Тынц
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33471949
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так это работает в Oracle:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
SQL> CREATE TABLE "TEST" (
   2     "ID" NUMERIC NOT NULL PRIMARY KEY,
   3     "NAME" VARCHAR2( 10 )
   4   )
   5   /

Tabelle wurde erstellt.

SQL> COMMIT
   2   /

Transaktion mit COMMIT abgeschlossen.

SQL> INSERT INTO "TEST" VALUES ( 1 , 'bla')
   2   /

 1  Zeile wurde erstellt.

SQL> INSERT INTO "TEST" VALUES ( 2 , '')
   2   /

 1  Zeile wurde erstellt.

SQL> INSERT INTO "TEST" VALUES ( 3 , NULL)
   2   /

 1  Zeile wurde erstellt.

SQL> SELECT * FROM "TEST" WHERE "NAME" IS NULL
   2   /

        ID NAME
---------- ----------
          2 
          3 

SQL> SELECT * FROM "TEST" WHERE "NAME" IS NOT NULL
   2   /

        ID NAME
---------- ----------
          1  bla

SQL> SELECT * FROM "TEST" WHERE "NAME"=NULL
   2   /

Es wurden keine Zeilen ausgewõhlt
:) Строк не было выбрано.

SQL> DROP TABLE "TEST"
   2   /

Tabelle wurde gelöscht.

В MS-SQL можно настраивать опции

В MySQL и PHP работа с NULL реализована через задние место, как и многое другое.
Лудше NULL вобще не использоват, а использовать пустые строки и 0.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33471955
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u4x96
В MySQL и PHP работа с NULL реализована через задние место, как и многое другое.
Лудше NULL вобще не использоват, а использовать пустые строки и 0.
Достаточно спорное высказывание. Вы можете подтвердить его аргументами?
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33472082
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u4x96Вот так это работает в Oracle:
В MS-SQL можно настраивать опции
........
В MySQL и PHP работа с NULL реализована через задние место, как и многое другое.
Лудше NULL вобще не использоват, а использовать пустые строки и 0.

Опять двадцать пять! Есть стандарт, который описывает, какое именно должно быть поведение NULL. Если кто-то его не придерживается (типа оракла), это конечно удобно в некоторых случаях, но это как раз и есть "через заднее место". И гордиться этим не стоит.

Ps: "лучше" пишется через "ч"
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33472122
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандарт гласит любая простая функция с NULL дает NULL в том чилсле NULL=NULL что в конечном условии равнозначо FALSE(хотя там свои тараканы, читайте "троичная логика"), есть специализированые функции вроде IsNull() которые обрабатывают NULL посвоему, агрегатные функции пропускают NULL, как бутто столбца с ним и небыло. По по поводу ('' IS NULL) стандарт не говорит ни чего. Действия Oracle и MS(с определенными настройками) полностью соответствую стандарту. А вод поведенуе MySQL различается от версии и параметров компиляции(которорые нельзя кат просто, кка у MS менять). В PHP появление NULL и вовсе приводит к значительному увеличению кода, а то и к дырам в безопасности.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33472154
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u4x96А вод поведенуе MySQL различается от версии и параметров компиляции(которорые нельзя кат просто, кка у MS менять). В PHP появление NULL и вовсе приводит к значительному увеличению кода, а то и к дырам в безопасности.
Увы, сложно спорить, поведение MySQL от версии к версии (точнее от ветки к ветке) нередко меняется, ну система развивается, что поделать.
По поводу простоты изменения поведения, в случае с MS вы вряд ли сможете изменить поведение сверх заранее предусмотренного разработчиками,)
А вот насчёт PHP хотелось бы увидеть примеры в качестве аргументов.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33472179
Фотография Хрен
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
читаем:
ansi_sql_92
1) Let X and Y be any two corresponding <row value constructor
element>s. Let XV and YV be the values represented by X and Y,
respectively.

Case:

a) If XV or YV is the null value, then "X <comp op> Y" is un-
known.


то есть NULL=NULL не является false. Так что вы недостаточно тщательно читали sql стандарт.


По по поводу ('' IS NULL) стандарт не говорит ни чего.


Это как? целый раздел 8.6 с названием <null predicate>


А вод поведенуе MySQL различается от версии и параметров компиляции(которорые нельзя кат просто, кка у MS менять).


Это вы вообще о чем говорите? Ну ка с этого момента поподробнее? От каких версий это зависит? какие параметры компиляции вы имеете в виду?
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33472223
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"то есть NULL=NULL не является false"

А кто это говорил
"любая простая функция с NULL дает NULL в том чилсле NULL=NULL что в конечном условии равнозначо FALSE(хотя там свои тараканы, читайте "троичная логика")"
то есть NULL=NULL, и NOT(NULL=NULL) равно NULL, что в конечном условии(предложение WHEN например) равнозначо FALSE, тоесть строка выкидывается. Под тараканами я имел ввиду NOT(NULL):NULL, NULL OR TRUE:TRUE, NULL OR FALSE:NULL и т.д.

"По по поводу ('' IS NULL) стандарт не говорит ни чего."
"Это как? целый раздел 8.6 с названием <null predicate>"

Чесно ни читал и читать не собираюсь, каждыйк сервер кто влес кто по дрова и положили они на этот параграф, как впрочем и я. Трудно представить ситуацию когда пустая строка нужна и не асоциируется с NULL. Кому нужны мертвые стандарты.

"Это вы вообще о чем говорите? Ну ка с этого момента поподробнее? От каких версий это зависит? какие параметры компиляции вы имеете в виду?"

Зайди на mysql.com и почитай.

"По поводу простоты изменения поведения, в случае с MS вы вряд ли сможете изменить поведение сверх заранее предусмотренного разработчиками,)"

После подлючения:
SET ANSI_NULLS ON
И не какие права не нужны, естественно это влияет только на ваши запросы, а не на процедуры и другие сохраненные обьекты. Не о какой перекомпиляций кода естественно и речи быть не может.

Читаем поле в глобальную переменную $a PHP, я сейчас и не припомню как вобще проверить поле на NULL в PHP, предположем mysql_is_null, a может стабтнаятная is_null канает.
if (is_null($result['a']))
$a=$result['a'];
else
unset($a);
Длиновато, найдуться ооптимизаторы которые сократят до
$a=$result['a'];
Чем это черевато при REGISTO_GLOBAL_ON
localhost?a=45
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33472242
Еретик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хренчитаем:
ansi_sql_92
1) Let X and Y be any two corresponding <row value constructor
element>s. Let XV and YV be the values represented by X and Y,
respectively.

Case:

a) If XV or YV is the null value, then "X <comp op> Y" is un-
known.


то есть NULL=NULL не является false. Так что вы недостаточно тщательно читали sql стандарт.


Здесь написано " NULL=NULL is uknown". Unknown на языке СУБД значит NULL (а не false, строго говоря).




Код: plaintext
1.
2.
3.
mysql> SELECT  1  <=>  1 , NULL <=> NULL,  1  <=> NULL;
        ->  1   1   0 


Но это только для <=>, а не для =


Да и вообще, от темы уже, кажется, все ушли. Парню надо было заменять '' на NULL... Только вот вопрос - НАФИГА ?

На мой взгляд, это опасное решение - зависит от нестандартных флагов, версий, параметров ini.... Стоит ли такая игра свеч? У кого есть версии?
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33472620
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u4x96Кому нужны мертвые стандарты.Любой нормальный программист тебе скажет, что нулл и пустая строка - не одно и то же, и, пожалуй, только у оракла на этот счёт своё мнение.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473025
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
maXmo u4x96Кому нужны мертвые стандарты.Любой нормальный программист тебе скажет, что нулл и пустая строка - не одно и то же, и, пожалуй, только у оракла на этот счёт своё мнение.
Не путай БД с класическими языками C++, Java, ... Там NULL и пустая строка это абсолютно разная и необходимая вещ. А в базах это геморой, который решается либо NOT NULL DEFULT '' либо NULL с установкой минимальной длины строки, в Oracle прописано стандартное решение NULL IS ''. Не разу не видел чтобы использовались пустые стрки и NULL одновременно, если есть идее поделись.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473081
Фотография Dinky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u4x96пустые стрки и NULL одновременно, если есть идее поделись.
элементарно - надо хрвнить: 1) значение 2) пустое значение 3) отсутствие значения

--
Dmitry
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473093
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u4x96
"По по поводу ('' IS NULL) стандарт не говорит ни чего."
"Это как? целый раздел 8.6 с названием <null predicate>"

Чесно ни читал и читать не собираюсь, каждыйк сервер кто влес кто по дрова и положили они на этот параграф, как впрочем и я. Трудно представить ситуацию когда пустая строка нужна и не асоциируется с NULL. Кому нужны мертвые стандарты.

От это финт ушами!
Сначала заявить, что MySQL не следует стандарту, и потому отстой, потом сказать, что стандарт не читал, потому как положили все на стандарт, и кому такой стандарт нужен?
Сильный ход!
u4x96
"Это вы вообще о чем говорите? Ну ка с этого момента поподробнее? От каких версий это зависит? какие параметры компиляции вы имеете в виду?"

Зайди на mysql.com и почитай.

"По поводу простоты изменения поведения, в случае с MS вы вряд ли сможете изменить поведение сверх заранее предусмотренного разработчиками,)"

После подлючения:
SET ANSI_NULLS ON
И не какие права не нужны, естественно это влияет только на ваши запросы, а не на процедуры и другие сохраненные обьекты. Не о какой перекомпиляций кода естественно и речи быть не может.

Прочитал http://dev.mysql.com/doc/refman/5.0/en/ansi-mode.html .
О какой перекомпиляции идёт речь?
Если ставить это только для сессии (без GLOBAL) никаких особенных прав также не нужно.
u4x96
Читаем поле в глобальную переменную $a PHP, я сейчас и не припомню как вобще проверить поле на NULL в PHP, предположем mysql_is_null, a может стабтнаятная is_null канает.
if (is_null($result['a']))
$a=$result['a'];
else
unset($a);
Длиновато, найдуться ооптимизаторы которые сократят до
$a=$result['a'];
Чем это черевато при REGISTO_GLOBAL_ON
localhost?a=45
Ну, знаете ли, register_globals=on -- это одна сплошная дыра, сколько я PHP использую -- столько в документации и не рекомендуют использовать этот режим работы. С версии 4.2.0 он по умолчанию выключен, а этой версии без малого 4 года.

Вот, например, скрипт:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
<?php
include_once('config.inc.php');
$link = connect_db();
$result = mysql_query('SELECT NULL');
$row = mysql_fetch_array($result);
$a = $row[ 0 ];
var_dump($row);
var_dump($a);
?>
И его вывод:
Код: plaintext
array( 2 ) { [ 0 ]=>  NULL ["NULL"]=>  NULL } NULL
И где эта дыра-дыра?
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473096
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dinky u4x96пустые стрки и NULL одновременно, если есть идее поделись.
элементарно - надо хрвнить: 1) значение 2) пустое значение 3) отсутствие значения

--
Dmitry
+1
Вполне стандартная ситуация.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473100
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dinky u4x96пустые стрки и NULL одновременно, если есть идее поделись.
элементарно - надо хрвнить: 1) значение 2) пустое значение 3) отсутствие значения

--
Dmitry
Пожалуста пример на уровне проэктирования
Вроде: КодКлиента 0-Клиент с кодом 0,NULL - его нету, товар продался в розницу
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473104
Фотография Dinky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u4x96
Пожалуста пример на уровне проэктирования
Вроде: КодКлиента 0-Клиент с кодом 0,NULL - его нету, товар продался в розницу
Увы, товарами не торгуем, торгуем сервисом :) Пример - база подписчиков, у каждого есть десятка два необязательных атрибутов, одни из них заполнены, другие - пустые, третьи - не заполнены (NULL). Используются все три типа значений. NULL в одних случаях означает "ко мне не относится", в других "вот этого - не нада!" :)

--
Dmitry
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473105
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
To DocaAl

Что ты с темы збился, если хоче Подискутировать о преимуществах MqSql. Зайди на rsdn.ru там специальный форум есть называеться "Компьютерные священные войны" в разделе "О жизни", я даже там тему для тебя соответствиющию сделал.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473108
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dinky u4x96
Пожалуста пример на уровне проэктирования
Вроде: КодКлиента 0-Клиент с кодом 0,NULL - его нету, товар продался в розницу
Увы, товарами не торгуем, торгуем сервисом :) Пример - база подписчиков, у каждого есть десятка два необязательных атрибутов, одни из них заполнены, другие - пустые, третьи - не заполнены (NULL). Используются все три типа значений. NULL в одних случаях означает "ко мне не относится", в других "вот этого - не нада!" :)

--
Dmitry
А что означает пустые, и если можно не столь абстрактно.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473135
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u4x96To DocaAl

Что ты с темы збился, если хоче Подискутировать о преимуществах MqSql. Зайди на rsdn.ru там специальный форум есть называеться "Компьютерные священные войны" в разделе "О жизни", я даже там тему для тебя соответствиющию сделал.
По существу, я так понимаю, сказать нечего?
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473150
u4x96
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня нет ни малейшего желания спорить с фанатиками Open Source, или еще чегонибуть. Так что поздравляю ты победил, ГОРДИСЬ.
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473156
DocAl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ваше сообщение "по теме":
u4x96
В MySQL и PHP работа с NULL реализована через задние место, как и многое другое.
Лудше NULL вобще не использоват, а использовать пустые строки и 0.

Ничего из сказанного вы аргументами подтвердить не смогли.
Причём тут какой-либо фанатизм? По крайней мере, в чём заключается _МОЙ_ фанатизм?,)
...
Рейтинг: 0 / 0
Вставить пустое поле как null
    #33473170
Фотография Dinky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
u4x96У меня нет ни малейшего желания спорить с фанатиками Open Source, или еще чегонибуть. Так что поздравляю ты победил, ГОРДИСЬ.
Я фанатик Здравого Смысла, поздравьте плиз и меня, жалко что-ли? :)

--
Dmitry
...
Рейтинг: 0 / 0
42 сообщений из 42, показаны все 2 страниц
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Вставить пустое поле как null
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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