문자열 처리를 할 때 토큰화 시키는 것이랑 trim 등은 매우 많이 쓰게 됩니다. 이번 시간에는 postgresql에서 특정 문자를 기준으로, split_part라는 함수를 이용해서 토큰화 시키는 방법을 알아보겠습니다. 먼저 3개의 인자를 받습니다. 원본 스트링, 그리고 delimeter 역할을 할 것 하나, 위치입니다. 저는 '-'를 기준으로 나누었기 때문에, a, b, c, d, efg, hi 순으로 나누어질 것이라는 것을 알 수 있습니다. 이 중 2번째는 b이므로 b가 출력되게 됩니다. 정말 그런지 보니, 'b'가 출력됨을 알 수 있어요. 다음에, 원본 문자열 'a-b-c-d-efg-hi'에서, '-'를 delimeter로 해서, 5번째 원소를 뽑으려고 합니다. 이 경우, a, b, c, d, ef..
코딩 검색 결과
파이썬에서 딕셔녀리의 첫 번째 원소를 어떻게 가져올까요? iter와 next를 적절히 잘 이용해서 가져오는 방법이 있습니다. 먼저 이해해야 할 것은 iter입니다. object로부터 iterator를 얻어오는데요. 이터레이터. 무언가를 순회하기 위한 도구 정도로 이해하면 적당합니다. 다음 원소를 가리키게 하는 메서드가 있는데요. 그것이 바로 아래에서 설명드릴 next입니다. 설명을 읽어 보면, next item을 이터레이터로부터 얻어온다고 되어 있습니다. 만약에, exhausted가 되면, Stopiteration을 리턴하는데요. default 값이 있다면 default 값을 리턴합니다. 여기까지 내용을 종합해서 정리해 봅시다. 일단, 저는 python 3.9를 쓰고 있으니, 기본적으로 Ordered가 ..
postgres에서 at time zone 을 쓰는 방법을 간단하게 알아봅시다. 정말이지 시간대는 실수 하기도 정말 좋고, 삽질 하기도 너무 좋은 듯 합니다. 먼저, 쿼리를 실행할 때 리턴하는 type 정보들을 알아봅시다. pg_typeof로 조회할 수 있는데요. 요래 입력해 봅시다. 그러면, now() at time zone 'HKT'의 리턴 타입은 timestamp without time zone이고, now()의 리턴 타입은 timestamp with time zone임을 알 수 있습니다. 먼저, timezone을 보겠습니다. Asia/Seoul입니다. 서버 시간이 서울 시간대인 셈입니다. now() at time zone 'HKT'의 결과는 어떻게 될까요? 먼저 postgres에서 now()는 문..
클린 코드 예외 처리 부분을 보다가 이런 문구를 보게 되었습니다. 정상 흐름을 정의해라. 처음에는 이 말이 무슨 뜻인지 잘 몰랐습니다. 곰곰히 생각해 보니, 이펙티브 자바에서도 비슷한 이야기가 있었는데요. 예외는 예외 상황에서만 사용하라는 것이였습니다. 아래 예제는 너무나도 유명한 예제일 겁니다. 먼저, 길이가 5인 ArrayList를 생성합니다. 그리고 0부터 4까지 넣었습니다. 다음에, 9 ~ 12번째 줄에서, 리스트에 있는 모든 원소를 순회하게 됩니다. 그리고 foo 메서드를 실행합니다. for loop를 도는데, OutOfBound 에러가 뜨는 경우에, 에러 로그를 남기고 종료합니다. foo 메서드를 봅시다. 이 메서드는 0 이상 6 미만의 정수를 뽑습니다. 0, 1, 2, 3, 4, 5를 뽑는다..
특정 조건을 만족하는 레코드에 대해서 집계되게 하게 하는 것은 어렵지 않습니다. 그런데, 이런 경우가 있을 수 있습니다. 1월에 카데고리별로 몇 개나 쓰여졌고, 2월에는 몇 개나 쓰여졌고, 이러한 것들을 집계해야 할 경우가 있을 텐데요. 사실 case when 등으로 처리를 할 수 있겠습니다만 postgres에서는.. aggregate filter를 처음 알게 되어서 여기에 쓰고자 합니다. 먼저, 포스트의 데이터들입니다. 포스트에는 점수와 post 내용, id와 category가 있습니다. 이들 중 post에 bye가 포함되는 것들을 모두 얻어와 봅시다. 1번 카데고리에 1개, 3번 카데고리에 2개가 있습니다. 그리고 1번 카데고리의 총 점수는 18점, 3번 카데고리는 87점입니다. 다음에 gahui가 ..
최근댓글