Indexing
DuckDB uses 1-based indexing except for JSON objects, which use 0-based indexing.
Examples
The index origin is 1 for strings, lists, etc.
SELECT list[1] AS elementFROM (SELECT ['first', 'second', 'third'] AS list);┌─────────┐│ element ││ varchar │├─────────┤│ first │└─────────┘The index origin is 0 for JSON objects.
SELECT json[1] AS elementFROM (SELECT '["first", "second", "third"]'::JSON AS json);┌──────────┐│ element ││ json │├──────────┤│ "second" │└──────────┘