전체 글

개발하면서 공부한 내용들을 정리하는 곳입니다
SQL

[Oracle/MySQL] CONCAT, 문자열 합치기

문자열을 합치는 예로는 주소가 있다. 주소는 데이터가 나뉘어서 저장되기도 하는데 출력할 때는 문자열을 합쳐야하고 이는 CONCAT으로 해결할 수 있다. CONCAT을 사용하는 방법은 Oracle과 MySQL이 동일하나, 약간의 차이점이 있다. Oracle에서 문자열 합치기 CONCAT으로 문자열 합치기 SELECT CONCAT(CONCAT('문자열',' '), '합치기') FROM DUAL; -- 문자열 합치기 CONCAT을 사용해서 문자열을 더할 수 있지만, 매개변수가 2개로 제한되어있다. 그래서 추가적인 연산을 하려면 CONCAT 함수를 연달아 사용해야한다. ||으로 문자열 합치기 ( Oracle만 가능 ) SELECT "문자열" || " " || "합치기" FROM DUAL; -- 문자열 합치기 위..

SQL

[MySQL] REGEXP, 정규표현식을 이용하여 검색하기

코딩테스트 문제를 풀다가 여러 조건 문자열 중 하나라도 포함된 튜플을 출력하라는 문제가 있었다. ( https://school.programmers.co.kr/learn/courses/30/lessons/151137 ) 단순히 LIKE와 OR연산으로 풀어나가도 문제는 없지만, 좀 더 편리한 방법이 없을까 하다가 찾은 함수가 REGEXP 이다. MySQL에서 정규표현식으로 검색하기 REGEXP로 여러 조건 문자열 중 하나라도 포함된 데이터 출력하기 ( | ) SELECT * FROM Customers WHERE Address REGEXP('Obere|Avda'); REGEXP 앞에 명시한 Address 컬럼에서 'Obere' 혹은 'Avda' 문자열을 포함한 데이터들이 출력된 것을 확인할 수 있다. 문자열..

SQL

[Oracle/MySQL] 날짜 연산, 이전 달 출력하기

오라클을 사용하는 업무 중에 없는 날짜를 조회에서 SQL 에러가 발생했던 일이 있었다. 하여 오늘은 이에 대한 내용을 정리하려 한다. Oracle에서 날짜 연산하기 INTERVAL 로 이전 달 출력하기 ( YYYYMM 포맷 ) SELECT TO_CHAR(SYSDATE - (INTERVAL '1' MONTH),'YYYYMM') FROM DUAL; -- ORA-01839 에러 발생 SELECT TO_CHAR(TO_DATE(TO_CHAR(SYSDATE,'YYYYMM'),'YYYYMM') - (INTERVAL '1' MONTH),'YYYYMM') FROM DUAL; -- 202304 위에서 에러가 발생하는 이유는 다음과 같다. 현재 날짜는 5월 31일이고 1 Month를 빼면 4월 31을 찾게되며 없는 날짜를 ..

SQL

[Oracle/MySQL] NVL과 IFNULL, COALESCE로 널 값 처리하기

널 값인 경우에 null을 그대로 출력할 수는 없으니 다른 값으로 출력하기 위한 함수가 존재하는데, 오늘은 그에 대해서 정리를 해보려 한다. 밑에 DEPARTMENT 테이블을 이용해 알아보자. deptno name location 1 Finance New York 2 Development - 현재, deptno=2이고 name='Development'인 데이터의 location이 널값이다. Oracle에서 널 값 처리하기 오라클에서는 NVL을 통해 널값을 처리할 수도 있고, 값이 있는 경우 원하는 값으로 대체하여 출력할 수도 있다. NVL(column명, 'null일 때 출력값') 로 널 값 처리하기 SELECT name,location,NVL(location,'none') FROM departments..

SQL

[Oracle/MySQL] DATE_FORMAT과 TO_CHAR, 날짜 출력하기

코딩테스트 SQL문제를 풀 때는 DATE_FORMAT을 사용해서 풀다가, 막상 업무를 할 때는 Oracle을 쓰니 날짜를 원하는 포맷으로 출력하는 것이 헷갈려서 같이 정리를 해보려한다. Oracle에서 날짜 형식 변경하기 DATE타입의 날짜를 원하는 포맷으로 출력하기 위해 많이 쓰는 함수가 TO_CHAR('DATE', '원하는 포맷')이다. TO_CHAR('DATE', '원하는 포맷') 으로 날짜/시간 출력하기 SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') FROM DUAL; SELECT TO_CHAR(SYSDATE,'yyyy-mm-dd') FROM DUAL; -- 2023-05-20 SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD HH24:MI:SS') FROM DUA..

SQL

[Oracle/MySQL] SUBSTR과 SUBSTRING, 문자열 자르기

Oracle과 MySQL 에 있는 '문자열 자르기' 기능에 대해 정리를 해보려한다. Oracle에서 문자열 자르기 SUBSTR('문자열','시작 위치') 을 통해 문자열을 자를 수 있다. 혹은, SUBSTR('문자열', '시작 위치', '길이') 처럼 길이를 추가하여 원하는 길이만큼의 문자열을 가져올 수 있다. SUBSTR('문자열','시작 위치') SELECT SUBSTR('PROGRAM',2) FROM DUAL; -- ROGRAM 주의할 점은 시작 위치에서 첫번째 인덱스는 0이 아닌 1이라는 것이다. 그러므로 결과값은, ROGRAM 이 된다. SUBSTR('문자열', '시작 위치', '길이') SELECT SUBSTR('PROGRAM',2,3) FROM DUAL; -- ROG 길이를 매개변수로 추가하..

limnj
개발을 하자