sql 8

[Oracle] SQL WHERE 조건에서 컬럼 두 개 이상 묶어서 비교하기

오라클 SQL에서는 WHERE 조건에서 컬럼을 단일 값이 아닌 튜플(tuple) 형태로 묶어 비교할 수 있다. 즉, (컬럼1, 컬럼2) 와 같이 여러 컬럼을 하나의 집합으로 취급하고, IN 조건이나 비교 조건에 (값1, 값2) 쌍을 지정하는 방식이다. 이 방법은 다중 컬럼 조합을 효율적으로 비교할 때 유용하다. 1) 기본 문법-- 기본 형태WHERE (컬럼1, 컬럼2) IN ((값1, 값2), (값3, 값4), ...)즉, 컬럼 두 개 이상을 묶어서 조건 비교를 할 수 있다. 2) 예시2-1) 단일 컬럼 비교SELECT *FROM 직원WHERE 부서번호 IN (10, 20);일반적인 IN 조건은 위와 같이 단일 컬럼에 대해서만 적용된다.2-2) 두 컬럼 튜플 비교SELECT *FROM 직원WHERE (부..

DataBase/Oracle 2025.09.10

[Oracle] 오라클의 DUAL 테이블과 가상 컬럼 활용법

오라클 SQL을 작성하다 보면 자주 마주치는 DUAL 테이블과, 테이블 설계 시 유용하게 활용할 수 있는 가상 컬럼. 이 글에서는 두 개념의 정의와 특징, 그리고 실용적인 예제를 통해 사용하는 법을 정리한다. 1) 오라클의 DUAL 테이블1-1) 정의DUAL은 오라클에서 단일 행을 반환하는 특수한 테이블로,연산이나 함수 실행 결과를 조회할 때 사용한다.1-2) 특징오라클 내장 시스템 테이블이며 모든 사용자에게 존재한다.행은 1개, 컬럼은 1개(DUMMY 컬럼)로 구성되어 있다.SELECT 문에서 단순한 계산, 함수 테스트, 가상 데이터 생성 등에 활용된다.1-3) 예시-- 현재 날짜 조회SELECT SYSDATE FROM DUAL;-- 단순 연산SELECT 1 + 2 FROM DUAL;-- 문자열 결합S..

DataBase/Oracle 2025.08.05

[SQL] 자주 쓰이는 숫자 연산 함수 정리 (ABS, POWER, SQRT, SIGN)

SQL에서는 숫자 계산 시 절댓값, 제곱, 제곱근, 부호 판단 등수학 연산이 필요한 경우가 많다.이번 글에서는 실무에서 자주 사용되는 수학 관련 숫자 함수들을 예제와 함께 정리해본다.Oracle을 기준으로 설명하며, 대부분의 DB에서 유사하게 지원된다. 1) ABS – 절댓값1-1) 문법ABS(number) 1-2) 특징입력된 숫자의 절댓값을 반환한다음수 → 양수로 변환, 양수 → 그대로 반환 1-3) 예시SELECT ABS(-10) AS a1, ABS(7.3) AS a2 FROM dual;a1: 10a2: 7.3 1-4) DB별 사용 가능 여부Oracle지원MySQL지원PostgreSQL지원MSSQL지원 2) POWER – 거듭제곱2-1) 문법POWER(base, exponent) 2-..

DataBase/SQL 2025.07.08

[SQL] 자주 쓰이는 숫자 함수 정리 (ROUND, TRUNC, CEIL, FLOOR, MOD)

SQL에서는 문자열 외에도 숫자 데이터를 다루는 경우가 많다.특히 금액 계산, 소수점 조정, 나머지 구하기 등 다양한 숫자 연산이 필요하다.이번 글에서는 실무에서 자주 사용하는 SQL 숫자 함수들을 예제와 함께 알아보자. 1) ROUND – 반올림1-1) 문법ROUND(number, decimal_places) 1-2) 특징숫자를 지정된 소수점 자리수에서 반올림한다두 번째 인자를 생략하면 정수로 반올림함 1-3) 예시SELECT ROUND(123.456, 2) AS r1, ROUND(123.456, 0) AS r2, ROUND(123.456) AS r3FROM dual;r1: 123.46r2: 123r3: 123 (자리수 생략 시 기본은 0) 1-4) DB별 사용 가능 여부Ora..

DataBase/SQL 2025.07.07

[Oracle] 특정 문자로 자릿수 채우기 LPAD, RPAD 함수

오라클에서 왼쪽, 오른쪽에 특정 문자를 원하는 문자열 길이만큼 채울 수 있는 LPAD, RPAD 함수에 대해 알아보자.1) LPAD: 지정한 길이만큼 왼쪽부터 채움문자로 채운다.채움문자를 지정하지 않으면 공백으로 해당 길이만큼 문자를 채운다.문법 LPAD("값", "총 문자길이", "채움문자") 2) RPAD: 지정한 길이만큼 오른쪽부터 채움문자로 채운다.채움문자를 지정하지 않으면 공백으로 해당 길이만큼 문자를 채운다.문법RPAD("값", "총 문자길이", "채움문자") 3) 예시WITH EMP AS (SELECT '1234' AS EMP_NO, 'HARRY' AS EMP_NM, '1000' AS DEPT_NO, '경영지원실' AS DEPT_NMFROM DUAL)SELEC..

DataBase/Oracle 2025.06.03

[Oracle] 오라클 소수점 존재 여부 체크 및 소수점 이하 값 구하기

오라클에서 수치값에 소수점이 존재하는지 체크하거나, 혹은 소수점 이하의 값만을 활용하고 싶은 경우가 있다.이 경우를 모두 만족하는 함수는 없지만, 연산을 통해 값을 도출해낼 수 있다.각각의 방법에 대하여 알아보자. 1) 소수점 존재 여부 체크1-1) TRUNC() 함수 활용: TRUNC 함수를 숫자에 사용하면 소수점 이하 값을 제거할 수 있다.WITH NUM_TABLE AS ( SELECT 1.25 AS NUM1, 2 AS NUM2, -5.5 AS NUM3 FROM DUAL)SELECT CASE WHEN NUM1 TRUNC(NUM1) THEN 'Y' ELSE 'N' END AS NUM1_RESULT, CASE WHEN NUM2 TRUNC(NUM..

DataBase/Oracle 2025.06.02

[SQL] 쿼리 결과가 없는 경우 0으로 반환하려면?

쿼리 조건에 맞는 결과가 없는 경우에도, 값을 리턴받고 싶은 경우가 있다.이 때는 MAX 함수를 사용하여 0으로 리턴받도록 할 수 있다. 1) COALESCE 함수로만 NULL 처리한 경우WITH DATA_TABLE AS (SELECT '1' AS A FROM DUALUNION ALLSELECT '2' AS A FROM DUAL)SELECT COALESCE(A, '0') AS RESULTFROM DATA_TABLEWHERE A = '3'; 결과값위 예시 쿼리에 대한 결과가 없기 때문에,이 결과값을 리턴받게 되는 경우 NULL이 될 것이다. 2) MAX 함수로 감싸서 NULL 처리한 경우WITH DATA_TABLE AS ( SELECT '1' AS A FROM DUAL UNION ALL S..

DataBase/SQL 2025.03.14

[SQL] ORDER BY에 조건을 주려면?

데이터 조회 결과값을 리스트로 화면에 보여주도록 개발을 하던 와중에쿼리문의 결과 행들 중 특정 행만 최하단에 오게 하도록 처리하고 싶었다.쿼리 결과값 중 특정 값을 맨 아래에 오게 하기 위해 ORDER BY에 조건을 주는 방법을 찾아보았다. CASE WHEN 1 OR 0 조건을 통해 우선순위를 줄 수 있다. 예시  ▶ A=’1000’인 데이터를 가장 뒤에 나오도록 처리함WITH DATA_TABLE AS ( SELECT '1000' AS A FROM DUAL UNION ALL SELECT '2000' AS A FROM DUAL UNION ALL SELECT '3000' AS A FROM DUAL)SELECT *FROM DATA_TABLEORDER BY (CASE WHEN A = ..

DataBase/SQL 2025.03.13