[Transact-SQL] Data Types
Online Learning 2020. 12. 9. 12:25
Exact Numeric |
Approximate Numeric |
Character |
Date/Time |
Binary |
Other |
tinyint |
float |
char |
date |
binary |
cursor |
smallint |
real |
varchar |
time |
varbinary |
hierarchyid |
int |
text |
datetime |
image |
sql_variant |
|
bigint |
nchar |
datetime2 |
table |
||
bit |
nvarchar |
smalldatetime |
timestamp |
||
decimal/numeric |
ntext |
datetimeoffset |
uniqueidentifier |
||
numeric |
xml |
||||
money |
geography |
||||
smallmoney |
geometry |
데이터 타입 변환
Implicit Conversion(암시적 변환)
-호환가능한 데이터타입은 자동으로 변환됨
Explicit Conversion(명시적 변환)
-사용자가 변환함수를 사용해서 직접 변환
- CAST / TRY_CAST
- CONVERT / TRY_CONVERT
- PARSE / TRY_PARSE
- STR
Date와 String은 암시적 변환이 가능하지만, 문화권에 따라서 년월일 표기의 순서가 다르므로 암시적 변환을 사용하지 않는게 좋다.
CONVERT함수에 이런 옵션이 많이 제공된다. ISO포맷이나 ANSI포맷 등
TRY는 연산에 실패하면 NULL을 리턴한다. 적어도 문장 자체에서 에러가 발생해 멈추지는 않는다.
--CAST
SELECT CAST(ProductID AS varchar(5)) + ': ' + Name AS ProductName
FROM SalesLT.Product;
--CONVERT
SELECT CONVERT(varchar(5), ProductID) + ': ' + Name AS ProductName
FROM SalesLT.Product;
--Convert Dates
SELECT SellStartDate,
CONVERT(nvarchar(30), SellStartDate) AS ConvertedDate,
CONVERT(nvarchar(30), SellStartDate, 126) AS ISO8601FormatDate
FROM SalesLT.Product;
Cast가 실패하면 에러가 발생한다.
SELECT Name, CAST (Size AS Integer) AS NumericSize
FROM SalesLT.Product; --(note error - some sizes are incompatible)
TRY_CAST를 사용하면 에러는 나지 않고 변환에 실패하면 NULL로 표시된다.
SELECT Name, TRY_CAST (Size AS Integer) AS NumericSize
FROM SalesLT.Product; --(note incompatible sizes are returned as NULL)
'Online Learning' 카테고리의 다른 글
[Transact-SQL] Removing Duplicates , Sorting Results, (0) | 2020.12.09 |
---|---|
[Transact-SQL] Working with NULLs (0) | 2020.12.09 |
[Transact-SQL] SELECT (0) | 2020.12.09 |
[Transact-SQL] AdventureWorksLT.bak Import to Local DB 로컬데이터베이스에 백업데이터베이스 추가하기 (0) | 2020.12.09 |
[영리한 프로그래밍을 위한 알고리즘 강좌] - 순환(Recursion)의 개념과 기본 예제 1 (0) | 2020.12.08 |