SQLite . 자료형 . INTEGER, REAL, TEXT, BLOB
자료형 | 용량 | |
INTEGER | 저장할 값에 따라 1, 2, 3, 4, 6, 8 바이트로 저장 | int8_t, int64_t , long 등 모든 정수형 저장시 활용 |
REAL | 항상 8 바이트로 저장되며, IEEE 754 64-bit 부동소수점 수를 사용 | float, double, long double 모든 부동 소수점 저장시 활용 가능하나. 금융권에서 중요한 숫자 저장시 TEXT 로 하는 경우 많음. |
TEXT | 저장되는 문자열의 길이에 따라 크기가 달라지며, 최대 1GB까지 지원 | C/C++의 char*, std::string, std::wstring 등 모든 문자열 저장시 활용 |
BLOB | 저장되는 바이너리 데이터의 크기에 따라 변동 크기로 저장됩니다. 최대 1GB까지 지원 | 이미지, 파일등 저장시 활용. |
중요한 부동소수점 저장시 REAL 로 하지 않고 TEXT 로 하는 경우 종종 있음.
4590.0349 같은 수치를 문자열 TEXT 로 저장하면, 수치의 정확성을 유지하면서 데이터를 복원 가능.
특히 금융 애플리케이션에서 특히 중요. 암호화폐 거래소 API 에서도 가격 등의 숫자 정보 송수신시 문자열 이용하고 있음. 예 . 바이빗 거래소 캔들 데이터 등 https://igotit.tistory.com/5763
IEEE 754 규격의 double, float 변수로 숫자들 핸들링 하면서 처리하다보면 4590.0349 가 아닌 4590.0348999999999 같은 식으로 처리되는것 방지할 목적.
정수 자료형에서는 위와 같은 문제 없음.
실수를 TEXT 로 저장한 경우 숫자 크기 처리 SQL 구문예
SELECT *
FROM T_Candle_M1
WHERE CAST(open AS REAL) BETWEEN 45.01 AND 96.09
ORDER BY CAST(open AS REAL);
- CAST(open AS REAL): TEXT 타입으로 저장된 open 컬럼의 값을 REAL 타입으로 변환다. 이 변환을 통해 문자열을 부동소수점 숫자로 변환.
- BETWEEN 45.01 AND 96.09: 변환된 숫자가 45.01 이상 96.09 이하인 레코드를 선택..
- ORDER BY CAST(open AS REAL): 결과를 open 값을 기준으로 정렬. 이 경우, open을 REAL로 변환하여 숫자 정렬을 수행.
연관
첫 등록 : 2024.09.01
최종 수정 :
단축 주소 : https://igotit.tistory.com/5808
'지속가능티끌 > SQL. 데이터베이스' 카테고리의 다른 글
SQLite . DB Browser for SQLite . 포터블 활용 (0) | 2024.09.01 |
---|---|
SQL . UPDATE (2) | 2023.11.22 |
SQL . SQLite . FOREIGN KEY . 외래키 설정 . (0) | 2022.02.16 |
SQLite . DB Browser for SQLite . SQLite 편집, 뷰어 GUI 툴 . 개요 . 설치 (0) | 2022.02.03 |
SQL. SELECT (0) | 2021.10.14 |
댓글