[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개의 문자열만을 추출하는 예제를 확인해 보면 동일한 결과를 확인할 수 있다. ...

7월 24, 2024 · Jun Kang

[이펙티브 자바] 10. equals는 일반 규약을 지켜 재정의하라

1. 개념 equals를 단순히 재정의 하는 것은 쉽지만 함정이 많다. 이번 장에서는 equals를 재정의 할 때 고려해야 하는 점과, 재정의가 완료된 후 확인해야 하는 부분들에 대해 다루고 있다. 2. equals를 재정의하는 경우와 재정의하지 말아야 하는 경우 2-1. equals를 재정의하지 말아야 할 경우 각 인스턴스가 본질적으로 고유한 값을 표현하는 클래스: 예를 들어, Thread 클래스는 각 인스턴스가 고유한 ID를 가지므로 equals를 재정의할 필요가 없다. 논리적 동치성 검사가 필요 없는 경우: 대부분의 경우 객체 식별성만 중요하며, 논리적 동치성은 필요하지 않을 수 있다. 상위 클래스에서 재정의한 equals가 하위 클래스에 적절한 경우: 상위 클래스에서 이미 equals를 적절히 구현했고, 이를 하위 클래스에서 그대로 사용해도 무방한 경우이다. 접근이 제한된 클래스: equals를 호출할 일이 없는 private이나 package-private 클래스일 경우, 재정의할 필요가 없다. 2-2. equals를 재정의해야 할 경우 논리적 동치성 비교가 필요한 경우: 객체의 내용이 같은지를 비교해야 할 때, 상위 클래스의 equals가 이를 충족시키지 않을 때 재정의가 필요하다. 3. equals 메서드의 규약 Object 기본 명세의 equals 메서드는 다음의 규약을 준수해야 한다: ...

6월 29, 2024 · Jun Kang

[GitHub] 민감한 정보 완전 삭제와 PR 히스토리 정리

GitHub 리포지토리에 보안정책에 위반되거나 민감한 정보를 실수로 업로드하는 경우가 있다. 해당 브랜치를 지우거나 커밋 히스토리를 밀어버려도 이미 머지된 Pull Request라면, 깃허브 UI의 closed request 탭에서 파일 히스토리를 확인하면 해당 내용이 그대로 남아 있어 별도의 조치가 필요하다. 1. 민감정보 파일 완전 삭제 (리포지토리 복제 및 재생성) 1-1. 기존 리포지토리 클론 및 민감 정보 제거 git clone --mirror https://github.com/username/repo.git cd repo.git # BFG Repo-Cleaner 다운로드 curl -L -o bfg.jar https://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/bfg-1.13.0.jar # 민감한 파일 깃 히스토리에서 완전 제거 java -jar bfg.jar --delete-files 'test.properties(삭제파일명)' # Git Garbage Collection 수행 ( Git reflog를 만료 시키고, 쓰지 않는 객체 삭제 ) git reflog expire --expire=now --all git gc --prune=now --aggressive 1-2. 기존 리포지토리에 클린 된 히스토리 강제 푸시 git push --force --all git push --force --tags ...

6월 19, 2024 · Jun Kang

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

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

5월 2, 2024 · Jun Kang

[디자인패턴] 전략(Strategy) 패턴의 개념, 예제, 장단점, 활용

1. 전략(Strategy) 패턴이란? Strategy는 전략이라는 뜻으로 적을 해치우는 작전, 게임을 이기는 전략, 문제를 풀어나가는 방법 등의 의미가 있고, 특히 프로그래밍에서는 문제를 해결하는 방식인 "알고리즘"을 의미한다. 모든 프로그램은 문제를 해결하기 위해 존재하며, 특정 알고리즘으로 구현된다. Strategy 패턴에서는 이미 구현한 알고리즘을 쉽게 모두 교체할 수 있다. 즉, 스위치를 누르듯 쉽게 알고리즘을 바꿔서 같은 문제를 다른 방법으로 해결하기 쉽게 만들어주는 패턴이 Strategy 패턴이다. 2. 전략(Strategy) 패턴의 구조 전략 패턴의 구조와 예제에서 각 요소가 어떤 역할을 하는지 간단하게 먼저 살펴보자. ...

4월 12, 2024 · Jun Kang