13 lines
494 B
Text
13 lines
494 B
Text
# "Compress" a string by printing it as a bitstring without the left-most bit of each byte
|
|
CREATE OR REPLACE FUNCTION sevenbits(str) as (
|
|
select string_agg(format('{}', ascii(s)::BITSTRING)[-7:], '')
|
|
from (select unnest(regexp_extract_all(str, '.')) as s)
|
|
);
|
|
|
|
# Undo sevenbits()
|
|
CREATE OR REPLACE FUNCTION from_sevenbits(str) as (
|
|
select string_agg(chr(s::BIT::INT), '')
|
|
from (select unnest(regexp_extract_all(str, '.......')) as s)
|
|
);
|
|
|
|
select from_sevenbits(sevenbits('abracadabra'));
|