SQL(MySQL)

MySQL의 데이터와 형 변환

느리지만 꾸준하게 2022. 4. 10. 20:59
-- 각각 1byte 2byte 4byte 8byte

CREATE TABLE hongong4 (
	tinyint_col TINYINT,
    smallint_col SMALLINT,
    int_col	INT,
    bigint_col BIGINT);
    
INSERT INTO hongong4 VALUES(127, 32767, 2147483647, 90000000000000000);
INSERT INTO hongong4 VALUES(128, 32768, 2147483648, 900000000000000000);

 

-- 변수는 현재상황에서 쓰고 임시적

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;
SELECT '가수 이름==> ', mem_name FROM member WHERE height > 166;






-- 이 문법은 사용이 안되므로 
SET @count = 3;
SELECT mem_name, height FROM member ORDER BY height LIMIT @count;


-- prepare를 이용해서 변수가 들어갈 부분에 ?로 지정해줌
SET @count = 3;
PREPARE mySQL FROM 'SELECT mem_name, height FROM member ORDER BY height LIMIT ?';
EXECUTE mySQL USING @count;

 

-- CAST, CONVERT를 써보면(SIGNED 소수점 버림)

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

평균 가격
143





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);

2022-12-12

 

-- CAST를 이용해서 price를 문자열로 바꾸고 amount를 문자열로 바꿔서 X와 합침

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


SELECT '100' + '200' ; -- 문자와 문자를 더함 (정수로 변환되서 연산됨)
SELECT CONCAT('100', '200'); -- 문자와 문자를 연결 (문자로 처리)
SELECT CONCAT(100, '200'); -- 정수와 문자를 연결 (정수가 문자로 변환되서 처리)
SELECT 1 > '2mega'; -- 정수인 2로 변환되어서 비교
SELECT 3 > '2MEGA'; -- 정수인 2로 변환되어서 비교
SELECT 0 = 'mega2'; -- 문자는 0으로 변환됨

 

 

 

 

 

 

 

 

 

 

<출처 한빛미디어:  MySQL의 데이터 형식(정수형, 문자형, 실수형, 날짜형)과 형 변환>

https://www.youtube.com/watch?v=WWAFAm9op2U&list=PLVsNizTWUw7GCfy5RH27cQL5MeKYnl8Pm&index=9