본문 바로가기
Programming/PostreSQL

Postgresql 에서 URL decode

by NAMP 2017. 12. 10.

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

댓글