|
|
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
alekcvp разве .Bound = False - это не есть Null ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 12:02 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
alekcvp А какой смысл хранить в базе пустую строку?.. У некоторых людей это религиозное. В духе известного анекдота про обрезание сосисок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 12:11 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
kdv Так вот. Null - это не значение. Это отсуствие значения. И хранить его можно только как "индикатор отсутствия значения" Это довольно странная точка зрения. Во всяком случае, мне было бы интересно, как Вы сумеете сформулировать принципиально различные определения "значения" и "индикатора отсутствия значения", учитывая, что и то, и другое в конечном итоге - набор битов. kdv И с Bound + Clear вот как раз эта самая фигня. Clear убивает значение, теперь значения нет. А Bound является индикатором, что значение всё-таки есть. Но оно "пустое". Это всего лишь означает, что не нужно использовать Clear не по назначению, а нужно кроме Clear иметь метод SetNull (и по правде говоря, при его наличии трудно придумать, зачем нужен Clear). Ну а после отказа от карго-культа и SetNull становится маловажным, поскольку в 99% случаев более уместен .AsString := ''. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 12:19 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
softwarer Это довольно странная точка зрения. Во всяком случае, мне было бы интересно, как Вы сумеете сформулировать принципиально различные определения "значения" и "индикатора отсутствия значения", учитывая, что и то, и другое в конечном итоге - набор битов. Не, ну тут-то понятно, у меня самого есть места где значения поля 0 и Null имеют разное значение. Но вот всегда хранить в базе пустые значения (0 или ''), независимо от контекста - ИМХО это странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 14:26 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
alekcvp Не, ну тут-то понятно, у меня самого есть места где значения поля 0 и Null имеют разное значение. Конечно. Логика для нуля и для пустой строки существенно различна. Но в том, что Вы цитируете, я не об этом. Я примерно вот о чём: допустим, я написал СУБД, в ней таблица с одной колонкой, в ней две записи. Вот эти записи в битовом представлении: Код: plaintext 1. Дополнительная информация: в одной из этих записей лежит значение null, в другой - буква "я". Мне очень интересно, каким образом коллега установит, где "значение", а где - "индикатор отсутствия значения", и, соответственно, ответит, какая из этих двух последовательностей битов какому значению соответствует. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 14:42 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
В 2020м году не понимать разницу между двузначной и трёхзначной логикой... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 15:25 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
softwarer, у Null значение же другое "не определено", "не известно". А пустая строка - это вполне определенное значение. Отсюда правила действий с Null. "Петя Иванов" + "" = "Петя Иванов" "Петя Иванов" + Null (неизвестно) = Null (неизвестно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 15:26 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
s62 softwarer, у Null значение же другое "не определено", "не известно". А пустая строка - это вполне определенное значение. Отсюда правила действий с Null. "Петя Иванов" + "" = "Петя Иванов" "Петя Иванов" + Null (неизвестно) = Null (неизвестно). Ну и нафига это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 15:27 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
ъъъъъ Ну и нафига это? P.S. Может индицировать то обстоятельство, что величина неизвестна (а не равна, например, нулю). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 15:30 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
s62 у Null значение же другое "не определено", "не известно" У null значение null. Интерпретация этого значения зависит от бизнес-логики в конкретном случае. s62 А пустая строка - это вполне определенное значение. Докажите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 15:31 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
s62 А пустая строка - это вполне определенное значение. Если у вас вместо количества позиций на складе пустая строка - это что? Товар отсутствует? Не знают сколько имеется? Знают, но не заполнили, потому что пофиг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 15:49 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
alekcvp s62 А пустая строка - это вполне определенное значение. Если у вас вместо количества позиций на складе пустая строка - это что? Товар отсутствует? Не знают сколько имеется? Знают, но не заполнили, потому что пофиг? Не, ну за уши что угодно притянуть можно. Например: пустая строка - "проверили - товара нет", Null - "пока не проверили". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 15:52 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
alekcvp s62 А пустая строка - это вполне определенное значение. Если у вас вместо количества позиций на складе пустая строка - это что? Товар отсутствует? Не знают сколько имеется? Знают, но не заполнили, потому что пофиг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 15:56 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
s62 alekcvp пропущено... Если у вас вместо количества позиций на складе пустая строка - это что? Товар отсутствует? Не знают сколько имеется? Знают, но не заполнили, потому что пофиг? Да щас. Заливали "исходные данные" - что там только не было: 1 шт, 2 литра, 1/2 тонны, 0.5 т, 11 уп, 12 ящ, 1/2 маленьк.ящ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 15:59 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
alekcvp s62 А пустая строка - это вполне определенное значение. Если у вас вместо количества позиций на складе пустая строка - это что? Товар отсутствует? Не знают сколько имеется? Знают, но не заполнили, потому что пофиг? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:00 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
s62 Ну это я не знаю, просто воспринимаю как данность мира SQL. Насколько я видел данности мира SQL, в нём есть следующие варианты: 1. Пустая строка и null неразличимы. Это удобно, соответствует логике реального мира и заметно облегчает жизнь. 2. Пустая строка и null различимы. Это неудобно, не соответствует логике реального мира и создаёт дополнительные проблемы. 2.1 Разработчик выносит на уровень внутреннего стандарта использование везде одного из этих двух значений. Например, вешает на все строковые поля constraint check (value <> ''). В результате приемлемым количеством геморроя он приводит ситуацию к первому пункту, исправляя кривизну БД. 2.2 Разработчик этого не делает, и через несколько лет все окружающие имеют большое сексуальное удовольствие сопровождать систему, в которой в половине мест "отсутствие значения" индицируется null-ом, в другой половине мест "отсутствие значения" индицируется пустой строкой и при написании кода каждые пять минут следует лазить в структуру таблиц смотреть как оно в конкретном поле, выбирать соответствущие операции и обвешивать всё многочисленными страховками. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:07 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
s62 Я имел в виду, определенное значение с точки зрения программирования Null - это ровно такое же "определённое значение с точки зрения программирования". s62 Если есть строковая переменная, то она может принимать какие-то значения, пустая строка - одно из допустимых значений, И null для неё тоже - одно из допустимых значений. s62 операция конкатенации например выполняется, как и с другими значениями. Конечно. Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:10 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
softwarer исправляя кривизну БД. Если ответ да, то почему тогда к строкам особое отношение? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:15 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, Вообще странный вопрос, как уже выше писали всё зависит от логики приложения. У меня есть места, где null и '' разницы не имеют, и там я храню null'ы. А есть места где '' - это "отсутствует", а null - это "не используется", и там да, хранятся и пустые строки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:23 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
softwarer, да, NULL тоже допустимое значение, согласен, но со специфическими правилами оперирования с этим значением, которые как бы понятны из соображений здравого смысла, если учитывать, что NULL это "значение не задано" или "значение неизвестно". Операция конкатенации, которую вы привели, в Firebird будет давать другой результат, NULL https://firebirdsql.org/file/documentation/reference_manuals/user_manuals/Firebird-Null-Guide-Russian.pdf В MS SQL, как пишут, по-умолчанию тоже (не работаю с ней, так что просто погуглил, как у них и это то, что было среди результатов) https://docs.microsoft.com/ru-ru/sql/t-sql/statements/set-concat-null-yields-null-transact-sql?view=sql-server-ver15 P.S. Нет, неправильно прочитал про MS SQL, задается параметром, не сказано, что это - значение параметра по-умолчанию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:24 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
Гемороя от Null много ... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:28 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
Dmitry Arefiev Гемороя от Null много ... :) А представьте компьютер на fuzzy logic, где каждый бит может принимать значения 0, 1 и null 😁 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:34 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ А если мы храним не строки, а числа? Должны ли мы различать NULL и 0? Мы ничего не должны, но чем больше реализация будет соответствовать потребностям реального мира, тем лучший результат будут выдавать те же программисты. В случае чисел, по моему опыту, оптимальный подход - различать null и 0, но при этом доопределить арифметические операции следующим образом: - деление любого числа на 0 даёт null - сложение и вычитание числа с null-ом даёт результатом это число. И да, этот подход проверен на практике, и результаты очень хороши. _Vasilisk_ Тот же вопрос для BOOLEAN (NULL/FALSE) Хороший вопрос. У меня нет на него однозначного ответа. У их различия есть свои плюсы, у их неразличимости - свои, и я не возьмусь уверенно сказать, какие весомее. Пожалуй, я бы сказал так: если ориентироваться на квалифицированных разработчиков, их лучше различать, если на неквалифицированных - лучше было бы не различать. _Vasilisk_ и GUID ({000000-.....000})? Я практически не работал с guid и могу чего-то не знать, но не вижу причин выносить его в особый тип. Думаю, будет правильно, если в отношении него будут действовать ровно те же правила, что и для соответствующего ему строкового значения. _Vasilisk_ Если ответ да, то почему тогда к строкам особое отношение? К строкам нет никакого особого отношения. Отношение везде одно - соответствие логике реального мира. Если Вы хотите спросить, почему для нуля и пустой строки разные оптимумы, то возьмите два листа чистой бумаги формата А4. Напишите на первом из них цифру 0 и скажите, можете ли Вы отличить этот лист от второго. Теперь возьмите ещё два листа чистой бумаги формата А4, напишите на третьем пустую строку и скажите, можете ли Вы отличить его от четвёртого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:40 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
s62 но со специфическими правилами оперирования с этим значением, которые как бы понятны из соображений здравого смысла Они понятны не из соображений "здравого смысла", а из соображений "стройности математической теории". s62 Операция конкатенации, которую вы привели, в Firebird будет давать другой результат И это одна из многих причин, по которым я не вижу смысла использовать Firebird. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:49 |
|
||
|
FireDAC - присвоить Null полю
|
|||
|---|---|---|---|
|
#18+
softwarer> 1. Пустая строка и null неразличимы. ... softwarer> соответствует логике реального мира Для приличия в таких случаях надо говорить "по моему скромному мнению". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2020, 16:49 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39957539&tid=2038324]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
248ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 557ms |

| 0 / 0 |
