PostgreSQL의 Function 요약

아래는 PostgreSQL의 함수를 요약한 내용이며, 보다 자세한 내용과 예제는 https://www.techonthenet.com/postgresql/functions/index.php 참고하기 바랍니다.

String Functions

  • btrim : 문자열의 시작과 끝 양쪽에 지정된 문자들을 제거
  • char_length : 문자열의 길이를 반환
  • character_length : 지정된 문자열의 길이를 반환
  • || : 2개의 문자열을 합하여 반환
  • initcap : 문자열 중 첫번째 문자는 대문자로 변환하고 나머지는 소문자로 변환
  • length : 문자열의 길이를 반환
  • lower : 지정된 문자열을 모두 소문자로 변환
  • lpad : 지정된 문자열을 원하는 길이로 맞추는데, 이때 부족한 문자를 왼쪽에 채움
  • ltrim : 문자열의 왼쪽에서 지정된 모든 문자를 제거
  • position : 문자열에서 지정된 문자열이 존재하는 인덱스값을 반환
  • repeat : 문자열을 원하는 만큼 반복해서 반환
  • replace : 기존의 문자열을 구성하는 부분 문자열을 원하는 문자열로 변환
  • rpad : 지정된 문자열을 원하는 길이로 맞추는데, 이때 부족한 문자를 오른쪽에 채움
  • rtrim : 문자열의 오른쪽에서 지정된 모든 문자를 제거
  • strpos : 기존의 문자열에서 찾고자 하는 부분 문자열의 위치를 반환
  • substring : 주어진 문자열에서 원하는 부분 문자열을 추출
  • translate : 기존의 문자열 중 치환하고자 하는 문자열을 지정해 변환
  • trim : 문자열의 시작과 끝 양쪽에 지정된 문자들을 제거
  • upper : 문자열을 모두 대문자로 변환

Numeric/Math Functions

  • abs : 절대값 반환
  • avg : 평균값 반환
  • ceil : 소수점 자리를 무조건 올려 정수 반환
  • ceiling : 소수점 자리를 무조건 올려 정수 반환
  • count : 개수 반환
  • div : 2개의 수를 나눠서 그 몫(정수)을 반환
  • exp : e(2.71828182845904)의 제곱값 반환
  • floor : 지정된 수와 같거나 작은 정수 반환
  • max : 최대값 반환
  • min : 최소값 반환
  • mod : 2개의 수를 나눈 그 나머지 반환
  • power : 거듭 제곱의 결과 반환
  • random : [0~1) 사이의 난수값 반환
  • round : 원하는 자리수에서의 반올림한 값을 반환
  • setseed : 난수 발생시 그 씨앗값을 설정.
  • sign : 주어진 수에 대한 부호 반환.
  • sqrt : 루투(root) 값 반환.
  • sum : 합계 반환.
  • trunc : 원하는 자리수까지의 값을 반올림 없이 반환

Date/Time Functions

  • age : 두 날짜 사이의 시간 간격을 년, 월, 일로된 문자열로 반환
  • current_date : 현재의 날짜 반환
  • current_time : Time Zone을 갖는 현재의 시간을 반환
  • current_timestamp : Time Zone을 갖는 현재의 날짜와 시간을 반환
  • date_part : 시간 또는 날짜로부터 원하는 부분(년, 월, 일, 시, 분, 일, 초 등)을 반환
  • extract : 시간 또는 날짜로부터 원하는 부분(년, 월, 일, 시, 분, 일, 초 등)을 반환
  • localtime : 현재의 시간을 반환
  • localtimestamp : 현재의 시간과 날짜를 반환
  • now : Time Zone을 갖는 현재의 날짜와 시간을 반환

Conversion Functions

  • to_char : 숫자 또는 날짜를 문자열로 변환
  • to_date : 문자열을 날짜로 변환
  • to_number : 문자열을 숫자로 변환
  • to_timestamp : 문자열을 타임스탬프(Timestamp)로 변환

FingerEyes-Xr의 그래픽 요소에 타이틀(텍스트) 달기

FingerEyes-Xr은 사용자가 마우스를 이용해 자유롭게 다양한 그래픽 요소를 지도에 스케치할 수 있습니다. 사용자가 스케치한 그래픽 요소에 원하는 텍스트 추가로 붙여주는 코드에 대해 정리합니다. 먼저 아래는 사용자가 마우스로 그린 그래픽 요소에 대해 특정 텍스트를 추가한 화면입니다.

코드 예시는 아래와 같습니다.

var gl = /* 그래픽 레이어 */
var id = /* 그래픽 요소의 ID */
var row = gl.row(id);

row.titleText("타이틀에 대한 텍스트");
row.titleFontSymbol() // 타이틀 텍스트에 대한 폰트 스타일
    .size(24).color('#f1c40f').strokeColor('#000000');

쉽죠? 쉬우니 관련 글 정리도 쉽네요..

PostgreSQL의 프로시져(PL/pgSQL) 예제

추후 PostgreSQL에서 프로시져를 작성할 때 참조하기 위해 글을 남깁니다.

CREATE OR REPLACE FUNCTION 
    get_two_rows(id1 TEXT, lyr1 TEXT, id2 TEXT, lyr2 TEXT) 
RETURNS 
TABLE (geom GEOMETRY)
AS $$
BEGIN
	RETURN QUERY EXECUTE
		'SELECT the_geom FROM ' || lyr1 || ' WHERE networkid::text = ''' || id1 || '''' || 
		' UNION ALL ' || 
		'SELECT the_geom FROM ' || lyr2 || ' WHERE networkid::text = ''' || id2 || '''';

END; $$
LANGUAGE PLPGSQL;

SQL문을 문자열 형태로 조합해서 실행하기 위해 ‘QUERY EXECUTE’를 사용해야 하며, 외따옴표(‘)를 문자열에 넣기 위해 연속된 외따옴표 2개가 필요하다는 것에 주의해야 합니다.

사실 위의 프로시져는 단순해서 그냥 SQL문을 통해 Java의 PrepareStatement를 사용해 실행해도 되는데.. PrepareStatement를 통한 SQL 문 실행시 SQL의 문자열 값 중 SELECT의 FROM절에 대한 테이블명은 바인딩할 수 없다(?에 의한..)는 제약때문에 프로시져를 사용하게 되었습니다. 소스코드에 대한 정적검사에서 SQL문에 대한 SQL Injection 보안성 오류로 지적받아.. 위와 같이 상당히 불필요한 프로시져까지 사용하게 되었습니다.

‘체 게바라’가 남긴 말

  •  침묵은 다른 방식의 자기 주장이다.
  •  내가 놓쳐버린 총을 다른 누군가집어 들고 쏘기를 계속해 준다면 나는 죽어도 좋다.
  •  혁명은 다 익어 저절로 떨어지는 사과같은 것이 아니고, 당신이 떨어지게 만들어야 하는 것이다.
  •  진정한 해방가는, 자기 자신이다. (원래는 “나는 행방가가 아니다. ‘해방가’는 존재하지 않는다. 민중은 스스로를 해방시킨다.” 임)
  •  무언가를 위해 죽으려고 하지 않는 한, 그 무엇도 절대 삶의 목표라는 확신할 수 없다.
  •  많은 이들이 나를 모험가라고 부르겠지만, 나는 다른 ‘류’의 모험가이다. 내 의견을 증명하기 위해 목숨을 거는 모험가.
  •  우습게 들릴지 모르겠지만, 진정한 혁명가를 이끄는 것은 위대한 사랑의 감정이다. 이런 자질이 없는 혁명가는 생각할 수 없다.
  •  현실주의자가 되자! 그러나 가슴 속에는 불가능한 꿈 하나는 가지자.
  •  시간은 어느 누구의 사정도 봐주지 않는다. 나이 한살 더 먹는다는 사실을 생각하며 전사로써 내 미래에 대해 깊이 성찰한다. 그러나 당장은 “타협하지 않겠다”라고 결심한다.
  •  수단이 비열하다면 결코 그 목적은 정당화 될 수 없다.
  •  우리는 이론을 만들지 말아야 한다. 우리가 해야할 것은 오직 행동이다.