パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

「NULL」というカスタムナンバープレートを取得したところ、大量の駐車違反切符を受け取る結果に」記事へのコメント

    • 値のNULLと文字列の"NULL"を適当に変換すれば。
      さらに、環境によっては、暗黙にそう変換されることも。

      親コメント
      • by Anonymous Coward

        値のNULLと文字列の"NULL"の混同が原因なのはほぼ間違いないだろうが、
        #3668224の言うように、それだけでは説明できない。

        もし値のNULLが文字列の"NULL"に変換されるなら、ナンバープレートを登録した時点から請求が来るはず。
        逆に文字列の"NULL"が値のNULLに変換されても、SQLならNULLに関する演算は不定なので、値が返されることはない。
        そうでなくとも値のNULLはクエリ中で再び文字列の"NULL"に変換されるだろうから、最初の疑問にまた戻る。

        つまり何らかの非対称性が必要。

        # 実は最初から請求は発生していたけど、駐車違反するまで正規の連絡先が分からなかったとか。
        # あるいはもっと単純に、駐車違反の頃にたまたまシステムが変わったとか。

        • 元コメは、そこまでの追求を求めてないやろ。

          ちなみに、「非対称性」なんか、値NULLは文字列にするが、文字列"NULL"はそのまま、となってるだけで成立するで。
          いいかげんにSQLを使えばありがち。

          親コメント
        • by Anonymous Coward

          交通違反は何度も起こりうるから、キーが文字列のエントリを探して罰金を加算するルーチンと、文字列からキーを作るルーチンが別なだけでしょ。要するにエントリを作る処理はnullチェックしてるけど、エントリを探す処理はnullでも通ってしまうのだと思う。

          • by Anonymous Coward

            別な「だけ」というか、2段階あるというのは#3668224の言っていることと本質的に同じでは?

            その上でnullチェックが不十分だとどうして不具合を起こすかという話まで来たんだと思うが。

にわかな奴ほど語りたがる -- あるハッカー

処理中...