Language/SQL

[MySQL] 변수와 형변환

seoraroong 2024. 8. 21. 00:29

변수 사용하기

SET @변수이름 = 변수의 값; // 변수 선언 및 값 대입
SELECT @변수이름; // 변수의 값 출력

 

변수는 MySQL Workbench를 종료하면 없어진다

 

USE market_db;
SET @myVar1 = 5;
SET @myVar2 = 4.25;

SELECT @myVar1;
SELECT @myVar1 + @myVar2;

SET @txt = '가수 이름==> ';
SET @height = 166;
SELECT @txt, mem_name FROM member WHERE height > @height;

 

 

 

📌 LIMIT에서는 변수를 사용할 수 없지만, PREPAREEXECUTE로 해결할 수 있다.

 

SET @count = 3;
PREPARE mySQL FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?';
EXECUTE mySQL USING @count;

LIMIT 다음에 오는 물음표(?) : 현재는 모르지만 나중에 채워지는 값

 

결론적으로 다음과 같은 SQL이 실행된다.

SELECT mem_name, height FROM member ORDER BY height LIMIT 3;

 

 

 

데이터 형 변환

형 변환 : 문자형 → 정수형 / 정수형 → 문자형

 

명시적인 변환 (Explicit conversion) : 직접 함수를 사용해 변환

암시적인 변환 (Implicit conversion) : 별도의 지시 없이 자연스럽게 변환

 

 

- 함수를 이용한 명시적인 변환 / CAST()CONVERT() 사용

CAST (값 AS 데이터_형식 [ (길이) ] )
CONVERT (값, 데이터_형식 [ (길이) ] )

 

 

- 구매 테이블에서 평균 가격을 정수로 표현하기

SELECT CAST(AVG(price) AS SIGNED) '평균 가격' FROM buy; //또는

SELECT CONVERT(AVG(price), SIGNED) '평균 가격' FROM buy;

SIGNED : 부호가 있는 정수

UNSIGNED : 부호가 없는 정수

 

 

- 다양한 구분자를 날짜형으로 변경하기

SELECT CAST('2022$12$12' AS DATE);
SELECT CAST('2022/12/12' AS DATE);
SELECT CAST('2022%12%12' AS DATE);
SELECT CAST('2022@12@12' AS DATE);

 

 

- SQL의 결과를 원하는 형태로 표현하기

   (가격(price)과 수량(amount)을 곱한 실제 구매액을 표시하기)

SELECT num, CONCAT(CAST(price AS CHAR), 'X', CAST(amount AS CHAR), '=' )
       '가격X수량', price*amount '구매액'
    FROM buy;

INT형인 price와 amount를 CAST() 함수를 통해 문자로 변환한다.

CONCAT() 함수는 문자를 이어주는 역할

 

 

 

- 암시적인 변환

SELECT '100' + '200';

문자 ‘100’과 ‘200’을 더할 수 없으므로 자동으로 숫자 100과 200으로 변환해 연산이 수행된다.

 

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

CONCAT() 함수를 사용해 문자 ‘100’과 ‘200’ 연결한다.

 

SELECT CONCAT(100, '200');
SELECT 100 + '200';

CONCAT() 을 사용할 때 숫자가 자동으로 문자로 변환된다.

더하기 연산을 할 때 문자가 자동으로 숫자로 변환된다.