SQLite 문자열에 NUL 문자가 있으면 예상치 못한 결과가 발생한다
Nul Characters in Strings in SQLite
SQLite는 데이터베이스에 저장된 문자열 중간에 NUL 문자(ASCII 0x00)를 허용하지만, 이로 인해 length() 함수나 CLI 출력 등에서 문자열이 첫 NUL 앞까지만 표시되는 등 예상치 못한 동작이 발생할 수 있습니다. 이 문서는 NUL 문자가 포함된 문자열을 감지하는 방법(CAST를 BLOB로 변환하거나 instr() 함수 사용)과 substr()과 instr()을 이용해 NUL 이후의 텍스트를 제거하는 UPDATE 문을 소개합니다. SQLite는 내부적으로 전체 문자열을 저장하지만, 사용자 인터페이스와 함수들이 NUL을 기준으로 동작하므로 주의가 필요합니다.
SQLite는 t1.b 열이 실제로 7자 문자열을 저장하고 있으며, 7자 문자열 'abc'||char(0)||'xyz'는 3자 문자열 'abc'와 같지 않다는 것을 알고 있으므로 행이 반환되지 않습니다.