最終更新日: 2026-08-25
TOP(About this memo)) > 一覧(RDB) > データ型(PostgreSQL)
U+0000を弾く。UTF-8に違反はしていないが、PostgreSQLのテキスト型はU+0000を禁止しているため実行時エラーになってしまう。
invalid byte sequence for encoding "UTF8" 0x00 のようなエラーが出る。
n はバイト数ではなく文字数。
uuid-ossp という拡張を生成しておく。以下のSELECTでは、キャストしてもしなくても実行結果は一応同じだった(おそらく暗黙的にuuidとしてキャストされている(?))。
SELECT * FROM users WHERE id = '11111111-1111-1111-1111-111111111111'::uuid
SELECT * FROM users WHERE id = '11111111-1111-1111-1111-111111111111'
ただし、下記の場合は明示的にキャストしないとエラーとなった。
OK
SELECT * FROM rooms WHERE id = ANY(array['11111111-1111-1111-1111-111111111111'::uuid, '22222222-2222-2222-2222-222222222222'::uuid, '33333333-3333-3333-3333-333333333333'::uuid])
NG(operator does not exist: uuid = text)
SELECT * FROM rooms WHERE id = ANY(array['11111111-1111-1111-1111-111111111111', '22222222-2222-2222-2222-222222222222', '33333333-3333-3333-3333-333333333333'])