powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC - присвоить Null полю
25 сообщений из 104, страница 2 из 5
FireDAC - присвоить Null полю
    #39957334
vavan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
разве .Bound = False - это не есть Null
если параметр не связан то его например вообще может не юзать генератор конечного запроса. а если его таки обязательно задействовать (пусть и в виде null) то нужно включить привязку
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957345
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
А какой смысл хранить в базе пустую строку?..

У некоторых людей это религиозное. В духе известного анекдота про обрезание сосисок.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957354
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv
Так вот. Null - это не значение. Это отсуствие значения. И хранить его можно только как "индикатор отсутствия значения"

Это довольно странная точка зрения. Во всяком случае, мне было бы интересно, как Вы сумеете сформулировать принципиально различные определения "значения" и "индикатора отсутствия значения", учитывая, что и то, и другое в конечном итоге - набор битов.

kdv
И с Bound + Clear вот как раз эта самая фигня. Clear убивает значение, теперь значения нет. А Bound является индикатором, что значение всё-таки есть. Но оно "пустое".

Это всего лишь означает, что не нужно использовать Clear не по назначению, а нужно кроме Clear иметь метод SetNull (и по правде говоря, при его наличии трудно придумать, зачем нужен Clear).

Ну а после отказа от карго-культа и SetNull становится маловажным, поскольку в 99% случаев более уместен .AsString := ''.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957440
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
Это довольно странная точка зрения. Во всяком случае, мне было бы интересно, как Вы сумеете сформулировать принципиально различные определения "значения" и "индикатора отсутствия значения", учитывая, что и то, и другое в конечном итоге - набор битов.

Не, ну тут-то понятно, у меня самого есть места где значения поля 0 и Null имеют разное значение. Но вот всегда хранить в базе пустые значения (0 или ''), независимо от контекста - ИМХО это странно.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957453
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
Не, ну тут-то понятно, у меня самого есть места где значения поля 0 и Null имеют разное значение.

Конечно. Логика для нуля и для пустой строки существенно различна. Но в том, что Вы цитируете, я не об этом. Я примерно вот о чём: допустим, я написал СУБД, в ней таблица с одной колонкой, в ней две записи. Вот эти записи в битовом представлении:

Код: plaintext
1.
0000000011111111
0000000100000000

Дополнительная информация: в одной из этих записей лежит значение null, в другой - буква "я". Мне очень интересно, каким образом коллега установит, где "значение", а где - "индикатор отсутствия значения", и, соответственно, ответит, какая из этих двух последовательностей битов какому значению соответствует.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957492
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В 2020м году не понимать разницу между двузначной и трёхзначной логикой...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957493
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer,

у Null значение же другое "не определено", "не известно". А пустая строка - это вполне определенное значение.
Отсюда правила действий с Null.
"Петя Иванов" + "" = "Петя Иванов"
"Петя Иванов" + Null (неизвестно) = Null (неизвестно).
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957494
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62
softwarer,

у Null значение же другое "не определено", "не известно". А пустая строка - это вполне определенное значение.
Отсюда правила действий с Null.
"Петя Иванов" + "" = "Петя Иванов"
"Петя Иванов" + Null (неизвестно) = Null (неизвестно).

Ну и нафига это?
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957499
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ъъъъъ

Ну и нафига это?
Ну это я не знаю, просто воспринимаю как данность мира SQL. Столкнулся в свой программе учета когда-то, когда наличие на складе - прибавлялось полученное к имеющемуся.

P.S. Может индицировать то обстоятельство, что величина неизвестна (а не равна, например, нулю).
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957501
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62
у Null значение же другое "не определено", "не известно"

У null значение null. Интерпретация этого значения зависит от бизнес-логики в конкретном случае.

s62
А пустая строка - это вполне определенное значение.

Докажите.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957522
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62
А пустая строка - это вполне определенное значение.

Если у вас вместо количества позиций на складе пустая строка - это что? Товар отсутствует? Не знают сколько имеется? Знают, но не заполнили, потому что пофиг?
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957525
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
alekcvp
s62
А пустая строка - это вполне определенное значение.

Если у вас вместо количества позиций на складе пустая строка - это что? Товар отсутствует? Не знают сколько имеется? Знают, но не заполнили, потому что пофиг?

Не, ну за уши что угодно притянуть можно.
Например: пустая строка - "проверили - товара нет", Null - "пока не проверили".
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957530
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
s62
А пустая строка - это вполне определенное значение.

Если у вас вместо количества позиций на складе пустая строка - это что? Товар отсутствует? Не знают сколько имеется? Знают, но не заполнили, потому что пофиг?
По идее количество позиций должно быть не строкой, а целым (или, если не штучный товар, то может быть с фиксированной/плавающей запятой). Соответственно ноль значит ничего нет.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957532
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
s62
alekcvp
пропущено...

Если у вас вместо количества позиций на складе пустая строка - это что? Товар отсутствует? Не знают сколько имеется? Знают, но не заполнили, потому что пофиг?
По идее количество позиций должно быть не строкой, а целым (или, если не штучный товар, то может быть с фиксированной/плавающей запятой).

Да щас.
Заливали "исходные данные" - что там только не было: 1 шт, 2 литра, 1/2 тонны, 0.5 т, 11 уп, 12 ящ, 1/2 маленьк.ящ...
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957533
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp
s62
А пустая строка - это вполне определенное значение.

Если у вас вместо количества позиций на складе пустая строка - это что? Товар отсутствует? Не знают сколько имеется? Знают, но не заполнили, потому что пофиг?
Я имел в виду, определенное значение с точки зрения программирования. Если есть строковая переменная, то она может принимать какие-то значения, пустая строка - одно из допустимых значений, операция конкатенации например выполняется, как и с другими значениями.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957539
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62
Ну это я не знаю, просто воспринимаю как данность мира SQL.

Насколько я видел данности мира SQL, в нём есть следующие варианты:

1. Пустая строка и null неразличимы. Это удобно, соответствует логике реального мира и заметно облегчает жизнь.
2. Пустая строка и null различимы. Это неудобно, не соответствует логике реального мира и создаёт дополнительные проблемы.
2.1 Разработчик выносит на уровень внутреннего стандарта использование везде одного из этих двух значений. Например, вешает на все строковые поля constraint check (value <> ''). В результате приемлемым количеством геморроя он приводит ситуацию к первому пункту, исправляя кривизну БД.
2.2 Разработчик этого не делает, и через несколько лет все окружающие имеют большое сексуальное удовольствие сопровождать систему, в которой в половине мест "отсутствие значения" индицируется null-ом, в другой половине мест "отсутствие значения" индицируется пустой строкой и при написании кода каждые пять минут следует лазить в структуру таблиц смотреть как оно в конкретном поле, выбирать соответствущие операции и обвешивать всё многочисленными страховками.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957540
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62
Я имел в виду, определенное значение с точки зрения программирования

Null - это ровно такое же "определённое значение с точки зрения программирования".

s62
Если есть строковая переменная, то она может принимать какие-то значения, пустая строка - одно из допустимых значений,

И null для неё тоже - одно из допустимых значений.

s62
операция конкатенации например выполняется, как и с другими значениями.

Конечно.

Код: plsql
1.
2.
3.
4.
5.
SQL> select 'Вася ' || null || 'Пупкин' test from dual;

TEST
---------------------
Вася Пупкин
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957542
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer
исправляя кривизну БД.
А если мы храним не строки, а числа? Должны ли мы различать NULL и 0? Тот же вопрос для BOOLEAN (NULL/FALSE) и GUID ({000000-.....000})?

Если ответ да, то почему тогда к строкам особое отношение?
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957545
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Вообще странный вопрос, как уже выше писали всё зависит от логики приложения.
У меня есть места, где null и '' разницы не имеют, и там я храню null'ы. А есть места где '' - это "отсутствует", а null - это "не используется", и там да, хранятся и пустые строки.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957546
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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, задается параметром, не сказано, что это - значение параметра по-умолчанию.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957550
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гемороя от Null много ... :)
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957554
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev
Гемороя от Null много ... :)

А представьте компьютер на fuzzy logic, где каждый бит может принимать значения 0, 1 и null 😁
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957559
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_
А если мы храним не строки, а числа? Должны ли мы различать NULL и 0?

Мы ничего не должны, но чем больше реализация будет соответствовать потребностям реального мира, тем лучший результат будут выдавать те же программисты.

В случае чисел, по моему опыту, оптимальный подход - различать null и 0, но при этом доопределить арифметические операции следующим образом:

- деление любого числа на 0 даёт null
- сложение и вычитание числа с null-ом даёт результатом это число.

И да, этот подход проверен на практике, и результаты очень хороши.

_Vasilisk_
Тот же вопрос для BOOLEAN (NULL/FALSE)

Хороший вопрос. У меня нет на него однозначного ответа. У их различия есть свои плюсы, у их неразличимости - свои, и я не возьмусь уверенно сказать, какие весомее. Пожалуй, я бы сказал так: если ориентироваться на квалифицированных разработчиков, их лучше различать, если на неквалифицированных - лучше было бы не различать.

_Vasilisk_
и GUID ({000000-.....000})?

Я практически не работал с guid и могу чего-то не знать, но не вижу причин выносить его в особый тип. Думаю, будет правильно, если в отношении него будут действовать ровно те же правила, что и для соответствующего ему строкового значения.

_Vasilisk_
Если ответ да, то почему тогда к строкам особое отношение?

К строкам нет никакого особого отношения. Отношение везде одно - соответствие логике реального мира.

Если Вы хотите спросить, почему для нуля и пустой строки разные оптимумы, то возьмите два листа чистой бумаги формата А4. Напишите на первом из них цифру 0 и скажите, можете ли Вы отличить этот лист от второго. Теперь возьмите ещё два листа чистой бумаги формата А4, напишите на третьем пустую строку и скажите, можете ли Вы отличить его от четвёртого.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957566
Фотография softwarer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62
но со специфическими правилами оперирования с этим значением, которые как бы понятны из соображений здравого смысла

Они понятны не из соображений "здравого смысла", а из соображений "стройности математической теории".

s62
Операция конкатенации, которую вы привели, в Firebird будет давать другой результат

И это одна из многих причин, по которым я не вижу смысла использовать Firebird.
...
Рейтинг: 0 / 0
FireDAC - присвоить Null полю
    #39957567
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
softwarer> 1. Пустая строка и null неразличимы. ...
softwarer> соответствует логике реального мира

Для приличия в таких случаях надо говорить "по моему скромному мнению".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
25 сообщений из 104, страница 2 из 5
Форумы / Delphi [игнор отключен] [закрыт для гостей] / FireDAC - присвоить Null полю
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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