PostgreSQL POSITION 함수로 문자열 내 위치 찾기

PostgreSQL에서 문자열 처리 작업을 하다 보면, 특정 단어가 문자열 안에 포함되어 있는지 또는 어느 위치에 있는지를 알아야 할 때가 있습니다. 이럴 때 유용하게 쓸 수 있는 함수가 바로 POSITION() 입니다. 1. POSITION 함수란? POSITION() 함수는 문자열 안에서 부분 문자열(substring)의 첫 번째 위치를 반환합니다. MySQL의 LOCATE(), Oracle의 INSTR()와 비슷한 역할을 합니다. `POSITION(substring IN string)` 리턴값: 부분 문자열이 시작하는 위치 (1부터 시작) 찾지 못하면: 0 반환 2. 기본 예제 SELECT POSITION('abc' IN '123abc456'); -- 4 SELECT POSITION('zzz' IN '123abc456'); -- 0 'abc'는 네 번째 문자에서 시작하므로 4를 반환합니다. 'zzz'는 존재하지 않기 때문에 0이 나옵니다. ...

August 13, 2025 · Jun Kang

[PostgreSQL] RDS 쿼리 성능 분석 방법 : pg_stat_statements 설치, 고려사항 및 주요 지표

1. RDS에서의 쿼리 성능 분석, pg_stat_statements란? RDS에서는 외부 익스텐션 사용이 제한된다. 쿼리 통계 및 성능에 대한 지표를 알 수 있는 여러 가지 익스텐션이 있지만, 그중 pg_stat_statements가 허용된다. pg_stat_statements의 원리, 사용법, 주요 지표에 대해 알아보자. pg_stat_statements는 실행된 쿼리에 대한 통계를 수집하고 저장한다. 다음은 저장되는 주요 지표들이고, 이를 통해 쿼리 성능을 분석하고 최적화할 수 있다. 쿼리빈도 쿼리 실행시간 쿼리 리소스 사용량 (CPU, 디스크I/O, 버퍼 히트 등) 쿼리 텍스트 저장 2. 설치 설치가 되어있지않다면 익스텐션을 먼저 설치하면 된다. ...

August 14, 2024 · Jun Kang

[PostgreSQL] SUBSTRING, SUBSTR, 문자열 자르기

PostgreSQL에서 문자열을 다루는 다양한 방법이 있다. 그중 문자열을 원하는 방식대로 자를 수 있는 함수들에 대해 알아보자. 먼저, 가장 많이 쓰이는 SUBSTRING, SUBSTR의 기본 사용 법 및 응용, 성능에 대해 알아보자. 1. Substring 기본 사용법 Substring과 Substr은 시작 위치(n), 길이(l)를 기준으로 문자열을 자를 수 있다. SELECT substring('문자열' FROM n FOR l); -- from, for 구문은 substring만 지원 SELECT substring('문자열', n, l); SELECT substr('문자열', n, l); 구문을 활용하여 PostgreSQL Tutorial 문자열에서 첫번째 위치인 P부터 10개의 문자열만을 추출하는 예제를 확인해 보면 동일한 결과를 확인할 수 있다. ...

July 24, 2024 · Jun Kang

[PostgreSQL] 문자열에서 날짜/시간 변환 및 처리 과정

1. 문자열에서 날짜/시간으로의 변환 PostgreSQL의 날짜형태의 칼럼을 조회할 때, 종종 정확한 날짜 형태를 사용하는 것이 아닌, 문자열, 혹은 숫자 형태로 간편하게 조회하는 경우가 있다. 예를 들어 2024/05/02 이후의 값을 조회할 때 다음 두 가지 조회 방법을 사용할 수 있다. date_column > '20240502' date_column > TO_DATE('20240502', 'YYYYMMDD') 예제와 같이 PostgreSQL은 일련의 문자/숫자열을 조건에 맞는 날짜형으로 자동으로 디코딩을 해주는데, 문자열을 인식하는 상세 과정을 순서대로 알아보자. 2. 문자열에서 날짜/시간으로의 디코딩 과정 2-1. 문자열을 토큰으로 분리하고 각 토큰을 시간, 시간대, 또는 숫자로 분류한다. 예제들에서는 정상적으로 날짜 및 시간이 변환되는지 확인하기 위해 강제로 TIMESTAMP 및 DATE로 형 변환을 하였지만, 날짜 형태의 데이터와 문자열 그대로를 비교하여도 날짜 및 시간 비교가 가능하다. ...

May 2, 2024 · Jun Kang

[PostgreSQL] ROWNUM 사용과 순번 부여하기 - ROW_NUMBER(), RANK(), DENSE_RANK()

1. 순번 부여하기 PostgreSQL에서는 각 데이터에 의미 있는 순번을 부여하기 위해 ROW_NUMBER(), RANK(), DENSE_RANK() 함수를 제공한다. ROW_NUMBER() OVER(PARTITION BY * ORDER BY * ) RANK() OVER(PARTITION BY * ORDER BY * ) DENSE_RANK() OVER(PARTITION BY * ORDER BY * ) 예제를 통해 자세한 사용법을 알아보자. (2. 테스트 테이블 & 데이터 생성 참고) 예제에서 사용할 데이터 1-1. ROW_NUMBER() 1-1-1. 단일 그룹 순번 부여 SELECT ROW_NUMBER() OVER (ORDER BY BRAND) AS ROWNUM, * FROM TEST_COMPLEX_GROUP; ...

April 11, 2024 · Jun Kang