본문 바로가기

개발공부/SQL7

[PL/PGSQL] 한글 자모 분리 회사에서는 PostgreSQL을 사용하는데, 아직 포스트그레는 레퍼런스가 없어서 많이 애를 먹었다.. 자동완성 검색 기능을 구현하기 위해 한글 자모를 분리한 후 두 키워드를 비교하여 포함 여부를 판단할 수 있도록 한글 자모가 분리된 문자열을 리턴받는 함수를 만들었다. 함수 생성 CREATE OR REPLACE FUNCTION octopus.fn_decompose_hangul(input_text text) RETURNS text LANGUAGE plpgsql AS $function$ DECLARE CHO text[] = ARRAY['ㄱ', 'ㄲ', 'ㄴ', 'ㄷ', 'ㄸ', 'ㄹ', 'ㅁ', 'ㅂ', 'ㅃ', 'ㅅ', 'ㅆ', 'ㅇ', 'ㅈ', 'ㅉ', 'ㅊ', 'ㅋ', 'ㅌ', 'ㅍ', 'ㅎ']; JUN.. 2023. 9. 28.
[ORACLE] 특수문자 찾기/특수문자 치환하기/특수문자 정규식 특수문자 정규식 '[[:punct:]]' 위의 정규식을 이용하면 찾고, 치환하는 것도 가능하다. 특수문자 찾기 조건절에 REGEXP_LIKE 함수 사용 SELECT [조회할 필드명] FROM [조회할 테이블명] WHERE REGEXP_LIKE([특수문자를 찾을 필드명], '[[:punct:]]') 사용예제 ▼ WITH TEMP AS ( SELECT 'as df' AS id FROM DUAL UNION ALL SELECT 'asdf!' AS id FROM DUAL UNION ALL SELECT 'asdf`' AS id FROM DUAL UNION ALL SELECT 'asdf1234' AS id FROM DUAL UNION ALL SELECT '1234' AS id FROM DUAL ) SELECT id .. 2023. 3. 31.
[ORACLE] 숫자 외의 데이터가 있는 필드 찾기(하이픈 포함 여부) 간혹 날짜나 휴대폰 번호를 문자열 타입으로 넣을 때, 하이픈(-)이 포함되어 있는지를 알고 싶을 때가 있다. 이번에는 휴대폰 번호를 예시로 하이픈(-)이 포함되어 있는 데이터만 조회해보고자 한다. 오라클에서 문자열을 치환하고자 할 때 REPLACE 함수를 많이 사용하지만, 위의 경우 TRANSLATE 함수를 이용하면 손쉽게 처리할 수 있다. TRANSLATE는 TRANSLATE ( 문자열, 대상 문자, 변환 문자 ) 형태로 사용할 수 있다. 한자리수의 숫자는 0부터 9까지만 존재하므로, 대상문자에 0부터 9까지의 숫자를 넣고 변환문자에 모두 공백만 넣는다면 숫자만 있는 필드는 공백만 리턴될 것이다. 이렇게 변환한 필드를 TRIM 처리하게 되면, 숫자만 있는 경우 NULL, 숫자 외에 다른 문자가 섞여 있.. 2023. 2. 14.
[ORACLE] 값이 한글로 되어있는 데이터 찾기 오라클에는 문자열의 길이를 가져오는 LENGTH와 LENGTHB 함수가 있다. LENGTH는 순수하게 문자열의 길이를 반환하고, LENGTHB는 문자열의 Byte를 반환하는데, 영어의 경우 문자열의 길이와 Byte가 동일하지만 한글은 사용하고 있는 DB의 캐릭터셋에 따라 다르지만 2Byte 혹은 3Byte로 문자열의 길이와 Byte가 일치하지 않는다. 이 점을 이용해 LENGTH와 LENGTHB의 반환값이 일치하지 않는 데이터를 찾으면 되는 것이다. with example as ( SELECT '김미희' AS name FROM DUAL UNION ALL SELECT 'Alice' AS name FROM DUAL UNION ALL SELECT 'John' AS name FROM DUAL UNION ALL .. 2023. 2. 14.