Postgresql 에서 URL decode
기본적으로 제공해주는 함수가 없으므로, 사용자 정의 함수를 만들어서 사용합니다.
CREATE OR REPLACE FUNCTION url_decode(input text) RETURNS text
LANGUAGE plpgsql IMMUTABLE STRICT AS $$
DECLARE
bin bytea = '';
byte text;
BEGIN
FOR byte IN (select (regexp_matches(input, '(%..|.)', 'g'))[1]) LOOP
IF length(byte) = 3 THEN
bin = bin || decode(substring(byte, 2, 2), 'hex');
ELSE
bin = bin || byte::bytea;
END IF;
END LOOP;
RETURN convert_from(bin, 'utf8');
END
$$;
위의 스크립트를 실행하여 사용자 정의 함수를 생성합니다. 이름은 url_decode
입니다.
select url_decode('%ED%95%9C%EA%B8%80');
이 후 url_decode
을 호출하여 url decode 할 수 있습니다. %ED%95%9C%EA%B8%80
는 한글
을 url encode 한 값입니다.
간략 설명
스크립트는 먼저 정규표현식을 통해서 %..
또는 .
을 찾습니다.
그 다음 %..
을 찾은 경우는 hex decode를 하고 아니면 그대로 bin 에 추가하여 utf8
로 변환합니다.
출처
'Programming > PostreSQL' 카테고리의 다른 글
postgresql docker compose로 실행 (0) | 2023.03.07 |
---|---|
마이바티스 쿼리 생성 - PostGIS 공간 쿼리 (0) | 2017.04.21 |
PostGIS 공간쿼리 (0) | 2017.04.20 |
Postgresql 버전 확인 (0) | 2017.04.06 |
Postgresql - DBLINK (0) | 2016.08.31 |
댓글