NULLの取り扱い

データベースから取得した行にNULL値があると、フィールド・タイプに応じて0または空文字列に置き換えられます。その後、行を更新し、データベースにもそれを反映させる段になると、それまでNULL値だったところが0や空文字列に変わってしまいます。ただし、Timestamp型フィールドは例外で、空文字列ではなく「1900-01-01」という値になります。

したがって、SQLのWHERE条件やキーの記述には、NULLを含めないようにしてください。0や空文字列になってしまっているので、NULLであるという条件で検索しても見つからない、ということが起こりえます。また、Timestamp値を比較する際、空文字列があるとODBC/SQLがエラーとするので、正しく処理できません。

NULL値が入りうる列は、行を更新する際のキーとして使わないでください。これをキーとすると、NULL値であるはずの列が0や空文字列になってしまっているので、該当する行が見つからず、正しく更新できない場合があります。