기본 문법 SELECT REGEXP_REPLACE([컬럼명], '[변경하고 싶은 값1]|[변경하고 싶은 값2]', [변경된 값]) AS [컬럼명] FROM [테이블명] 예제 select REGEXP_REPLACE(user_name , '둘리|독산|성', '###') from public.JOINTABLE; JOINTABLE에서 user_name 컬럼의 속성이 둘리,독산,성 인 녀석들을 전부 ###으로 변경해줌 왼쪽은 기본 select이고, 오른쪽은 REGEXP_REPLACE를 활용한 위의 쿼리문을 실행한 결과 근데 하다보니, 뭐가 문제인지는 모르겠지만, 영어인 녀석들은 REGEXP_REPLACE 함수가 제대로 먹지 않음.. 그래서 첫번째 값은 제대로 변경이 되는데 | 다음에 있는 두번째 값들은 변경이 되..
오늘 postgresql 함수 좀 테스트 해보려고 오랜만에 DBeaver를 켰는데.. 다음과 같은 에러가 떴다. Connection to localhost:5433 refused. Check that the hostname and port are correct and that the postmaster is accepting TCP/IP connections. 그래서 왜 그런가... 한 10분 찾아보다가, 서비스에서 postgresql-x64-14가 중지되어 있던 것을 발견. 실행해주면 되겠지? 라는 생각에 실행을 해줬는데. 실행이 안된다.. 그래서 또 뭐지 3분 고민하다가, psql로 직접 들어가보기로 했다. 어디서 많이 본 에러다. 며칠전에 postGis가 안되서 "libintl-9.dll" 파일을 ..
오늘은 Postgresql의 EXISTS에 대해서 알아보자. ( 오라클이나 MySQL에도 있으니 알아만 놓으면 어디서나 사용가능! ) 기본문법 SELECT * from [테이블명] where EXISTS (서브쿼리); SELECT * from [테이블명] where NOT EXISTS (서브쿼리); EXISTS는 해당 값이 있는 지 없는 지 체크하는 연산자이다. 그럼 왜 EXISTS를 쓰는걸까? EXISTS를 사용하는 가장 큰 이유는 성능면에서 유리하기 때문이다. 보통 우리가 존재여부를 체크할 때는 count(*)를 많이 쓰기 마련인데.. count(*)와 EXISTS를 비교해보자. -- count(*) 사용 : 안좋은 예 SELECT * from PUBLIC.COMTNWEBLOG C where 1 >=..
오늘 공간정보(지오메트리)를 테스트 하려고 지오메트리를 포함하는 테이블을 생성하려고 했는데 아래와 같은 에러가 발생하였다. 에러가 발생하는 이유는 확장프로그램인 postgis가 적용되지 않았기 때문.. 아래 쿼리문을 통해 postgis를 적용시킬 수 있다. pgAdmin을 통해 해당 데이터베이스의 쿼리에서 실행하도록 하자. CREATE EXTENSION postgis; 자세한 내용은 ( 링크 )를 참조 하도록 하자. ( 예전에 지오서버 연동 할 때 postgis를 적용해서 해결 한 적이 있어 정리해둔 듯.. )
가끔 필요할 때가 있는데, 그때마다 찾기가 귀찮아서 이렇게 정리한다. SELECT TABLE_NAME as 테이블이름, column_name as 컬럼명, is_nullable as null가능여부, data_type as 데이터타입, character_maximum_length as 최대길이, character_octet_length, numeric_precision, numeric_precision_radix, numeric_scale FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_CATALOG = [DB명] and table_schema = [스키마명] and table_name = [테이블명] ORDER BY 테이블이름, ORDINAL_POSITION; 여기서 딱 ..
오늘은 뷰테이블 생성시 필요컬럼을 함수를 통해 추가하는 방법에 대해 정리하려고 한다. 이번에 프로젝트를 하면서 PNU코드에서 산/일반 구분을 추출하였는데, 일반은 1, 산은 2라는 코드만 있을 뿐 실제 지도의 라벨에 뿌려 줄 텍스트를 가지는 컬럼이 없었다. 그래서 저 1과 2라는 값을 통해 산/일반 텍스트를 리턴해주는 함수를 이용하여 컬럼을 추가해주었는데 블로그에 정리가 안되있는 것 같아 정리해본다. get_user_name 함수 생성 CREATE OR REPLACE FUNCTION public.get_user_name(id character varying) RETURNS text LANGUAGE plpgsql AS $function$ DECLARE BEGIN return (select user_name..