入力規則を追加・変更したときにNull値がエラー扱いされる

 既存のテーブルに入力規則を加えたり変更したときに、特に抵触するような値がないはずなのにエラーがでたことはないでしょうか。
 原因は恐らくNullが存在することです。

f:id:accs2014:20170725232209p:plain:right:w500

 再現してみます。「住所」列の値がNullであるレコードが1つあります。


f:id:accs2014:20170725233423p:plain:right:w600

 ここで入力規則に「Like "*[市区町村]*"」と入力します。「市区町村」の4文字のうち、少なくとも1文字を含まなければならないという意味です。
 住所が入力されているレコードにはいずれも「市」または「区」が含まれているので問題なさそうな感じですが、テーブルを保存する際に既存のレコードへのチェックをしてみると…


f:id:accs2014:20170725232201p:plain:right:w600

 エラーとなります;-o-)
 Nullが入力規則に合致していないためエラーとなったのです。
 

f:id:accs2014:20170725232158p:plain:right:w500

 まあ言われてみれば確かにそうですが、設定後にレコードの追加あるいは更新により住所がNullになってもエラーにはならないので、ちょっと腑に落ちないかもしれません。
 いずれ、入力規則を「Like "*[市区町村]*" Or Is Null」としておけば間違いありません。「Or Is Null」を加えずにチェックし、エラーが出ても「Nullがあるからだろう」と思いこんでスルーしてしまうと、問題のある既存のレコードを見逃す可能性がありますので注意してください。