SQLiteの文字列にNUL文字が含まれると起こる意外な挙動とその対策
Nul Characters in Strings in SQLite
SQLiteは文字列の途中にNUL文字(ASCII 0x00)を格納できますが、これが原因でlength()やquote()、CLIの.dumpなどが最初のNUL以降を無視し、表示上は短い文字列に見えるのに、実際の比較では全長が考慮されるという混乱を招くことがあります。この記事では、その挙動の具体例、CASTでBLOBに変換してNULを検出する方法、instr()関数を使った自動検出、そしてsubstr()でNUL以降を除去するUPDATE文による対処法を解説します。
NUL文字を含む文字列の使用は推奨されません。