gpt4 book ai didi

null - Paradox 如何管理 null 和空值?

转载 作者:行者123 更新时间:2023-12-01 22:42:31 30 4
gpt4 key购买 nike

我通过 Borland 数据库引擎 (BDE) 使用 Paradox 表。

我无法理解 null空字符串 值在字符串字段(Paradox 数据类型“A”)中的处理方式。

我的具体问题是如何确定字段值是否为 null 或空字符串。在数据库桌面工具中,它们似乎都是空字符串。

我需要这个,因为我正在将数据(使用 Database Desktop 以及以编程方式)迁移到 Firebird 数据库,似乎是空字符串的字段值都作为空值复制到 Firebird。 .. 即使是属于索引的字段! 如何区分真正的 null 和空字符串?它取决于 Paradox 还是 BDE?谢谢!

最佳答案

BLANK as NULL 被认为是有害的

如您所知,现代数据库实现包括“NULL”的概念,这是一个永远不会匹配任何其他值的值,即使是另一个 NULL。

BDE 及其祖先 Paradox 引擎和 DOS 的 Paradox,不包括 NULL 的概念。 BDE 表中的所有数据类型都不允许像 NULL 这样的排除值。

BDE 确实包含 BLANK 的概念,但这只是某些类型的特殊带内值。 BLANK 匹配 BLANK,没有其他匹配。在数字字段中,BLANK 可与 0 区分开来,但在字母字段中,BLANK 等同于零长度字符串。

显然在过去的某个时候,某人的任务是创建一个实用程序以将 BDE 表导入到 SQL 数据库中,但他并没有完全胜任。他可能无法想象没有 NULL 的数据库,因此他猜测 BLANK 与 NULL 相同。从那时起,其他人都效仿了他。

将 BDE BLANK 转换为 SQL NULL 是错误的。这样做会改变数据库的架构,并破坏任何相关应用程序的架构。从 BDE 表导入的数据不应包含 NULL。

要么编写您自己的导入过程,要么使用内置导入,然后仔细地对导入的数据进行后处理,将所有 NULL 转换为其他值。

BLANK alpha 值必须转换为零长度 CHAR 或 VARCHAR 值。

BLANK 数值必须转换为与自身匹配的选定带内标志值。您可能必须保留一个特殊值来表示 BDE BLANK,除非可以使 NaN 或类似的值起作用。在许多情况下,根据应用程序架构,您将能够将 BDE BLANK 转换为 SQL 0。

当然,如果您的 SQL 实现允许一个 BLANK 数值与自身相匹配并与 NULL 区分开来,那么您的问题就会减少,因为您的数据库至少与 BDE 一样有能力。不过,您可能仍然无法使用内置的导入实用程序。

关于null - Paradox 如何管理 null 和空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10228123/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com