|
|
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Вопрос такой - как сделать ,чтоб при изменении поля пустое значение(т.е. '') воспринималось сервером как NULL ? В более общем виде задача стоит следующая. В 4-й версии MySQL операция с полем f1 int Код: plaintext Если есть еще какие-нибуть идеи как это дело обойти буду благодарен. P.S. Общаюсь с MySQL недавно, поэтому если что - просьба ногами не бить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2005, 15:17:39 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
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. Или как-то еще ... Только вопрос - это действительно надо? не зря NULL<>'' в базе. Последствия от такой замены могут быть непредсказуемы... Например, тот, кто будет разбираться с твоим кодом, будет долго париться, откуда берутся NULL в базе... Советую хорошо подумать, надо ли оно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2005, 17:38:49 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Yorick.kiev.ua , апдейт написан неправильно. Низачот. ------------------ - А как в Интеpнете pаботать? - Сначала нужно узнать, что вам нужно rtfm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2005, 18:20:28 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
ЕретикЯ не знаю такого сервера СУБД, который пустую строку приравнивает NULL - это принципиально невозможно, по определению. Oracle, видимо, Вы не знаете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.12.2005, 19:09:10 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
miksoft ЕретикЯ не знаю такого сервера СУБД, который пустую строку приравнивает NULL - это принципиально невозможно, по определению. Oracle, видимо, Вы не знаете? miksoft, то есть в Oracle NULL и пустая строка - одно и то же? Пример в студию, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2005, 19:34:18 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
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. Правильное решение для сабжа - пройдитесь grep-ом по коду и исправьте '' на DEFAULT, в 5м это работает и для UPDATE. -- Dmitry ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.12.2005, 23:50:12 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Еретик Если б не твой "P.S.", думаю, уже б побили :) Ответ: Я не знаю такого сервера СУБД, который пустую строку приравнивает NULL - это принципиально невозможно, по определению Чему равен null - вопрос, вообще говоря, философский. В ms msql, к примеру, равен ли один null другому определяется отдельной командой. В MySQL 5+ попробуй написать триггер или сохраненку, к примеру: [/quot] Триггер, разумеется, не пройдет, т.к. типы проверяются до insert. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2006, 13:44:35 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
DinkyПозволю усомниться: MySQL 4.0.18: Dmitry В чем, прошу прощения? Вы же сами показали, что запрос выполняется и идет вставка "0". Это меня тоже устроит. Править код - это на крайний случай. Очень трудоемко - запросы-то формируются динамически, да и все равно что-то где-то упустишь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2006, 14:09:09 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Отключите strict mode у пятого MySQL. ЗЫ. А вообще, думать надо было, когда недокументированные особенности использовали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2006, 15:12:28 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Yorick.kiev.uaЧему равен null - вопрос, вообще говоря, философский. В ms msql, к примеру, равен ли один null другому определяется отдельной командой. сорри, но глупости :) NULL не равен NULL - истино для любой нормальной БД ;) именно поэтому для проверки значения на NULL используется отдельная ф-ция. -- Dmitry ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2006, 19:00:25 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Еретик miksoft ЕретикЯ не знаю такого сервера СУБД, который пустую строку приравнивает NULL - это принципиально невозможно, по определению. Oracle, видимо, Вы не знаете? miksoft, то есть в Oracle NULL и пустая строка - одно и то же? Пример в студию, пожалуйста. если это будет достаточным примером, то вот: Код: plaintext 1. 2. 3. 4. 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2006, 09:08:29 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Еретикmiksoft, то есть в Oracle NULL и пустая строка - одно и то же? Пример в студию, пожалуйста.Да пожалуйста: Тынц №1 - Обсос того, что в Oracle пустая строка есть ничто иное как NULL ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2006, 09:36:41 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2006, 18:15:08 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Yorick.kiev.ua Dinky сорри, но глупости :) NULL не равен NULL - истино для любой нормальной БД ;) Это глупости только в Вашем представлении. И так же, очевидно, ни ms sql, ни Oracle не есть "нормальными" БД. Эти глупости прописаны в стандарте sql. И кстати насчет sql server - читайте про set ansi_nulls, а для оракла NULL не равен NULL. В оракле трехзначная логика и NULL = NULL дает UNKNOWN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2006, 19:59:23 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
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 хватает. Только аргументом это быть не может. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.01.2006, 20:01:40 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Ох, вот за что я люблю наших людей... Вроде и проблему описал четко и все понятно, ан нет, начались рассуждения о том, "как оно должно быть" и как это "должно быть" соответствует стандартам... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2006, 12:41:42 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
ничего себе "четко" - Вы сказали что Вам надо NULL в поле, когда вставляется пустая строка, и это работало в 4й версии. Оказалось: 1) не работало 2) NULL не надо так к кому претензии? ;) -- Dmitry ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2006, 18:44:19 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
О как. А что надо? Я что-то утерял нить дискуссии... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2006, 18:55:48 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
2227381: Yorick.kiev.uaВы же сами показали, что запрос выполняется и идет вставка "0". Это меня тоже устроит. И ответ, собственно, уже прозвучал: DocAlОтключите strict mode у пятого MySQL ;) -- Dmitry ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2006, 19:05:35 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Что-то похоже я в лужу сел) Никого не забрызгало, надеюсь?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2006, 19:09:59 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.01.2006, 19:42:25 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Вот так это работает в 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. В MS-SQL можно настраивать опции В MySQL и PHP работа с NULL реализована через задние место, как и многое другое. Лудше NULL вобще не использоват, а использовать пустые строки и 0. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 18:02:26 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
u4x96 В MySQL и PHP работа с NULL реализована через задние место, как и многое другое. Лудше NULL вобще не использоват, а использовать пустые строки и 0. Достаточно спорное высказывание. Вы можете подтвердить его аргументами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 18:06:08 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
u4x96Вот так это работает в Oracle: В MS-SQL можно настраивать опции ........ В MySQL и PHP работа с NULL реализована через задние место, как и многое другое. Лудше NULL вобще не использоват, а использовать пустые строки и 0. Опять двадцать пять! Есть стандарт, который описывает, какое именно должно быть поведение NULL. Если кто-то его не придерживается (типа оракла), это конечно удобно в некоторых случаях, но это как раз и есть "через заднее место". И гордиться этим не стоит. Ps: "лучше" пишется через "ч" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 21:47:53 |
|
||
|
Вставить пустое поле как null
|
|||
|---|---|---|---|
|
#18+
Стандарт гласит любая простая функция с NULL дает NULL в том чилсле NULL=NULL что в конечном условии равнозначо FALSE(хотя там свои тараканы, читайте "троичная логика"), есть специализированые функции вроде IsNull() которые обрабатывают NULL посвоему, агрегатные функции пропускают NULL, как бутто столбца с ним и небыло. По по поводу ('' IS NULL) стандарт не говорит ни чего. Действия Oracle и MS(с определенными настройками) полностью соответствую стандарту. А вод поведенуе MySQL различается от версии и параметров компиляции(которорые нельзя кат просто, кка у MS менять). В PHP появление NULL и вовсе приводит к значительному увеличению кода, а то и к дырам в безопасности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.01.2006, 22:47:33 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=33468433&tid=1853204]: |
0ms |
get settings: |
5ms |
get forum list: |
18ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
182ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
68ms |
get tp. blocked users: |
1ms |
| others: | 189ms |
| total: | 478ms |

| 0 / 0 |
