🔢 수치 연산

SQL에서도 사칙연산(+, -, *, /, %)이 가능합니다. 연산 우선순위는 기본적으로 동일하며, 괄호로 명시하면 우선순위 지정이 가능합니다.

SELECT 2022 - 1934;  -- 결과: 88

✅ NULL과의 연산

SELECT 2021 - NULL; -- 결과: NULL
  • NULL이 포함된 연산 결과는 항상 NULL입니다.

✅ 나눗셈

SELECT 3 / 2;     -- 정수 나눗셈 → 결과: 1 (소수점 버림)
SELECT 3.0 / 2;   -- 실수 포함 시 → 결과: 1.5
SELECT 3 / 0;     -- 0으로 나누기 → 에러 발생

✅ 수치 함수 예시

SELECT ROUND(3.141592, 3);   -- 반올림 → 결과: 3.142
SELECT POWER(2, 3);          -- 2의 3승 → 결과: 8
SELECT COS(0);               -- 코사인 0 → 결과: 1

참고: 다양한 함수는 SQL Server 공식 문서를 참고하세요!


📊 한국 나이 계산 (응용 예시)

players 테이블에서 한국 나이를 계산하고, 사망하지 않았고 생년이 존재하며 80세 미만인 사람만 조회하는 쿼리:

SELECT 2021 - birthYear + 1 AS koreanAge
FROM players
WHERE deathYear IS NULL
  AND birthYear IS NOT NULL
  AND (2021 - birthYear + 1) <= 80
ORDER BY koreanAge;

SELECT의 별칭(koreanAge)은 WHERE절에서 사용할 수 없습니다.
⛔ 다음 코드는 에러 발생합니다:

WHERE koreanAge <= 80 -- 사용 불가

🔁 SQL 실행 순서 (중요!)

  1. FROM: 테이블에서 데이터 가져오기
  2. WHERE: 조건 필터링
  3. SELECT: 컬럼 및 계산 정의
  4. ORDER BY: 정렬

📝 문자열 처리

✅ 문자열 리터럴

SELECT 'Hello World';

한글 출력 시 깨짐 현상 발생 가능:

SELECT '안녕하세요'; -- 결과: ????

✅ 유니코드 문자열 출력 (한글 정상 출력)

SELECT N'안녕하세요'; -- 앞에 N을 붙이면 유니코드로 처리

✅ 문자열 결합

SELECT 'Hello ' + 'World';
SELECT CONCAT('Hello', 'World');

+ 연산자 또는 CONCAT 함수 모두 사용 가능.

✅ 이름 합치기 예제

SELECT nameFirst + ' ' + nameLast AS fullName
FROM players
WHERE nameFirst IS NOT NULL
  AND nameLast IS NOT NULL;

🧰 문자열 함수

-- 부분 문자열 추출 (1부터 시작!)
SELECT SUBSTRING('20220822', 1, 4); -- 결과: 2022

-- 앞뒤 공백 제거
SELECT TRIM('     Hello World    '); -- 결과: Hello World

TRIM, SUBSTRING, LEN, LEFT, RIGHT, REPLACE 등 다양한 문자열 함수도 SQL에서 사용 가능.


profile
李家네_공부방

0개의 댓글