SQL

SQL

[MySQL] 연/월/일 출력하기 ( 좌측 0 제거 )

프로그래머스에서 아래의 SQL 문제를 풀다가 날짜를 DATE_FORMAT 으로만 출력하는 나를 발견하고 정리하게 되었다. https://school.programmers.co.kr/learn/courses/30/lessons/151139 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr MySQL에서 연월일 출력하기 MONTH (DATE 타입) 으로 월 출력하기 SELECT MONTH(DATE('20220807')) FROM DUAL; -- 8 SELECT DATE_FORMAT(DATE('20220807'),'%m') FROM DUAL; -- 08 문제의 조..

SQL

[SQL] CASE-WHEN, 조건에 따라 출력하기

저장된 값에 대해 조건에 따라 다른 출력을 해야할 때가 있다. CASE-WHEN 표현식은 오라클과 MySQL 간 차이점이 없기 때문에 유용하게 사용할 수 있다. CASE-WHEN 절 사용하기 더보기 CASE WHEN 조건 THEN 조건이 참일 때 실행 ELSE 조건이 거짓일 때 실행 END 사용 방법은 위와 같으며 예제를 적용해보자 나이가 20살 이상이면 '성인', 아니면 '학생' 출력하기 SELECT AGE, CASE WHEN AGE>=20 THEN '성인' ELSE '학생' END 분류 FROM CUSTOMERS; - 실행 결과 USTOMERS 테이블에 AGE라는 필드가 위와 같을 때, 분류는 CASE WHEN 절로 출력한 결과이다. CASE WHEN 절은 꼭 END로 끝내줘야하며 뒤에 별칭을 적용할..

SQL

[Oracle/MySQL] ROWNUM과 LIMIT, 행 수 제한하기

업무 중에 가끔씩 가장 최신 데이터 1개만 출력하는 등의 쿼리를 짠다. 그와 관련해서 ROWNUM과 LIMIT에 대해 정리해보려한다. Oracle에서 행 수 제한하기 ROWNUM으로 특정 개수 데이터 조회하기 SELECT * FROM CUSTOMERS WHERE ROWNUM=2; WHERE 절에서 ROWNUM을 사용하여 데이터 개수를 제한할 수 있다. 단, '=' 연산이기 때문에 조회한 데이터가 1개밖에 없을 때는 결과가 출력되지 않는다. 만약에 보고싶다면 '

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..

limnj
'SQL' 카테고리의 글 목록