如何悖论管理空和空值?(How does Paradox manage null and empty

2019-07-29 02:04发布

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

我不能够实现空字符串值在字符串字段的处理方式(Paradox数据类型“A”)。

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

我需要这个,因为我迁移这似乎是空字符串全部复制到火鸟为空值 ...属于索引偶数场数据(使用数据库的桌面,也编程)到火鸟DB和字段值如何从空字符串区分真正的空? 它取决于从悖论或BDE? 谢谢!

Answer 1:

BLANK为NULL是有害的

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

该BDE,其祖先的悖论引擎和悖论DOS, 不包括空的概念 。 在BDE表中的数据类型都不允许像一个NULL值排斥。

该BDE 包括毛坯的概念,但是这仅仅是对某些类型的特殊带值。 BLANK比赛空白,没有别的。 在数字领域中,BLANK是从0区分的,但在一个α字段,BLANK等同于零长度的字符串。

显然,在朦胧的过去一段时间,有人与创建一个实用程序从BDE表导入到SQL数据库的任务,他没有达到它。 他也许不能没有空值concieve数据库的,所以他猜测BLANK是一样的NULL。 从那时起,其他人刚刚跟随他的领先优势。

翻译BDE空白到SQL空值是错误的。 这样做会更改数据库的架构,并打破任何有关应用程序的架构。 已经从一个BDE表导入不应该包含空值的数据。

无论是写自己的导入过程,还是慎重使用内置进口,然后后处理导入的数据到所有空值转换为其他值。

BLANK阿尔法值必须被转换成零长度CHAR或VARCHAR值。

BLANK数值必须被转换成符合本身的选定频带内的标志值。 您可能需要保留一个特殊的值来表示BDE空白,除非NaN或一些这样可以使工作。 在许多情况下,根据不同的应用架构,你将能够BDE BLANK转换为SQL 0。

当然,如果你的SQL实现允许符合本身是NULL区分空白数值,那么你的问题减少了,因为你的数据库是至少小马哥BDE。 你可能仍然无法使用内置的导入实用程序,虽然。



Answer 2:

SQL示例:

select customer_id from customer
where (customer_addr is null) -- string null
   or (customer_addr = '')    -- string is empty

德尔福例如:

if (query1customer_addr.AsVariant = NULL) // string null
  or (query1customer_addr.AsString = '')  // string is empty
then ShowMessage('Null or Empty');


文章来源: How does Paradox manage null and empty values?