githubEdit

URL Encode / Decode

The url_encode function percent-encodes a string per RFC 3986. Only unreserved characters (A-Z, a-z, 0-9, -, _, ., ~) are left as-is β€” everything else is encoded as %XX with uppercase hex digits.

The url_decode function decodes percent-encoded strings back to their original form. It also decodes + as a space (for application/x-www-form-urlencoded compatibility). Invalid percent sequences (e.g., %ZZ, trailing %) are passed through literally.

Encode

D SELECT url_encode('hello world') AS encoded;
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚    encoded    β”‚
β”‚    varchar    β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ hello%20world β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
D SELECT url_encode('cafΓ©') AS encoded;
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  encoded  β”‚
β”‚  varchar  β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ caf%C3%A9 β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
D SELECT url_encode('key=value&lang=en') AS encoded;
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚          encoded          β”‚
β”‚          varchar          β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ key%3Dvalue%26lang%3Den   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Decode

Round-trip

Returns an empty string for empty input and NULL for NULL input.

Last updated

Was this helpful?