SQL(5) ➡️ 변수, 데이터 형식과 형 변환

OlMinJe·2023년 9월 17일

SQL

목록 보기
5/5
post-thumbnail

변수의 사용

✅ 형식

set @변수명 =; -- 변수의 선언 및 값 대입
select @변수명; -- 변수의 값 출력

💡 예시

set @myVar1 = 5;
set @myVar2 = 3;
set @myVar3 = 4.25;
set @myVar4 = '가수 이름 ==> ';

select @myVar1;
select @myVar2 + @myVar3;
select @myVar4, Name from usertbl where height > 180;

📝 perpare와 execute

set @myVar1 = 3;
prepare myQuery
from 'select name, height 
		from usertbl
		order by height limit ?';
execute myQuery using @myVar1;
  • 자바스크립트나 SQL문에서 SQL문을 준비 상태로 만들 때 사용한다.
  • prepare 쿼리문_이름은 쿼리문을 준비만 해놓고 실행하지 않는다.
  • exeute 쿼리문_이름을 만나는 순간 해당 구문이 실행된다.

데이터 형식 변환 함수

1️⃣ CAST

𝗤. CAST란?
𝐀. (모든 유형의) 값을 지정된 데이터 형식으로 변환해준다.

✅ 형식

CAST(value AS datatype)
-- value: 필수, 변환할 값
-- datatype: 변환할 데이터 타입

2️⃣ CONVERT

𝗤. CONVERT란?
𝐀. 값을 지정된 데이터 형식 또는 문자 지합으로 변환한다.

✅ 형식

CONVERT(value, type)
또는
CONVERT(value USING charset)
-- value: 필수, 변환할 값
-- data: 필수, 변환할 데이터 타입
-- charset: 필수, 변환할 문자 집합

💡 예시 (1)

select avg(amount) as '평균 구매 개수'
from buytbl;

-- 평균 구매 개수를 정수형으로 변환하기
-- [1] CAST 이용
select cast(avg(amount) as signed integer) as '평균 구매 개수'
from buytbl; -- 반올림 되어 출력된다.

-- [2] CONVERT 이용
select convert(avg(amount), signed integer) as '평균 구매 개수'
from buytbl;

-- signed: 부호 있는

💡 예시 (2)

-- 날짜 형식으로 출력하기
select cast('2023$01$01' as date);
select cast('2023/01/01' as date);
select cast('2023%01%01' as date);
select cast('2023@01@01' as date);
select cast('2023.01.01' as date);

// 해당 형식도 변환된다.
select cast('2024.2.29' as date);
select cast('24.2.29' as date);

실행결과


💡 예시 (3)

-- 결합 함수 concat()을 사용하여 형변환하기
select num, concat(
	cast(price as char(10)), 'X', cast(amount as char(4)), '=' ) as '단가X수량',
	price * amount as '구매액'
from buytbl;

<결과>
1 30X2= 60
2 1000X1= 1000
3 200X1= 200
.
.
.
12 30X2= 60


묵시적 형 변환

1. 문자와 문자를 더하기

SELECT '100' + '200' ; -- 300

문자가 정수로 변환된다.

2. 문자와 문자를 연결

SELECT CONCAT('100', '200'); -- 100200

CONCAT 내장 함수를 사용하였기 때문에, 문자열 그대로 연결된다.

3. 정수와 문자를 연결

SELECT CONCAT(100, '200'); -- 100200

CONCAT 내장 함수를 사용하였기 때문에, 정수가 문자로 변환된다.

4. 정수와 문자의 비교 연산(1)

SELECT 1 > '2mega'; -- 0

문자 2mega는 정수 2로 변환된 후 비교 연산을 진행한다.

5. 정수와 문자의 비교 연산(2)

SELECT 3 > '2MEGA'; -- 1

문자 2mega는 정수 2로 변환된 후 비교 연산을 진행한다.

6. 정수와 문자의 비교 연산(3)

SELECT 0 = 'mega2'; 

문자 mega는 정수 0으로 변환된 후 비교 연산을 진행한다.

이때, 산술 연산자나 문자 연산자는 숫자로 취급한다.

profile
큐트걸

0개의 댓글