有害と見なされるNULLとしての空白
ご存知のように、最新のデータベース実装には「NULL」の概念が含まれています。これは、他のどの値とも一致しない値であり、別のNULLであっても一致しません。
BDE、およびその祖先であるParadoxエンジンとParadox for DOSには、NULLの概念は含まれていません。BDEテーブルのどのデータ型も、NULLのような除外値を許可していません。
BDEにはBLANKの概念が含まれていますが、これは一部のタイプの特別な帯域内値にすぎません。BLANKはBLANKと一致します。数値フィールドでは、BLANKは0と区別できますが、アルファフィールドでは、BLANKは長さがゼロの文字列と同じです。
どうやら薄暗い過去のある時期に、誰かがBDEテーブルからSQLデータベースにインポートするためのユーティリティを作成する任務を負いましたが、彼はそれに完全に対応していませんでした。彼はおそらくNULLなしではデータベースを思いつくことができなかったので、BLANKはNULLと同じであると推測しました。それ以来、他の誰もが彼の先導に従いました。
BDEBLANKをSQLNULLに変換するのは間違っています。これを行うと、データベースのアーキテクチャが変更され、関連するアプリケーションのアーキテクチャが破損します。BDEテーブルからインポートされたデータにNULLが含まれることはありません。
独自のインポート手順を作成するか、組み込みのインポートを使用してから、インポートしたデータを慎重に後処理して、すべてのNULLを他の値に変換します。
BLANKアルファ値は、長さがゼロのCHAR値またはVARCHAR値に変換する必要があります。
BLANK数値は、それ自体と一致する選択された帯域内フラグ値に変換する必要があります。NaNなどを機能させることができない限り、BDEBLANKを表すために特別な値を予約する必要がある場合があります。多くの場合、アプリケーションアーキテクチャによっては、BDEBLANKをSQL0に変換できます。
もちろん、SQL実装で、それ自体と一致し、NULLと区別できるBLANK数値が許可されている場合、データベースは少なくともBDEと同等の機能を備えているため、問題は軽減されます。ただし、組み込みのインポートユーティリティはまだ使用できない可能性があります。