강좌

HOME > 강좌 >
강좌| 리눅스 및 오픈소스에 관련된 강좌를 보실 수 있습니다.
 
CAST 연산자
조회 : 5,333  


CAST 연산자
CAST 연산자를 SELECT 문에서 어떤 값의 데이터 타입을 다른 데이터 타입으로 명시적으로 변환하는데 사용할 수 있다. 조회 리스트 또는 WHERE 절의 값 수식을 다른 데이터 타입으로 변환할 수 있다.
CUBRID에서 CAST 연산자를 사용한 명시적인 타입 변환에 대해서 정리하면 다음의 표와 같다.
Data type to cast in the coercion result
EN AN VC FC VB FB D T UT S MS SQ
EN 아니요 아니요 아니요 아니요 아니요 아니요 아니요
AN 아니요 아니요 아니요 아니요 아니요 아니요 아니요
VC 예[1] 예* 아니요 아니요 아니요
FC 예* 예* 아니요 아니요 아니요
VB 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
FB 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
D 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
T 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
UT 아니요 아니요 아니요 아니요 아니요 아니요 아니요
S 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
MS 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
SQ 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요 아니요
[1] 이 경우에 CAST 연산은 값 수식과 변환할 데이터 타입이 같은 문자 코드 세트를 가질 경우에만 허용된다.
1) 데이터 타입 키
EN : 정확한 수치형(INTEGER, SMALLINT, NUMERIC, DECIMAL)
AN : 근사값 수치형(FLOAT/REAL, DOUBLE PRECISION, MONETARY)
VC : 가변 길의 문자열(VARCHAR(n), NCHAR VARYING(n))
FC : 고정 길의 문자열(CHAR(n), NCHAR(n))
VB : 가변 길의 비트열(BIT VARYING(n))
FB : 고정 길의 비트열(BIT VARYING(n))
D : 날짜(DATE)
T : 시간(TIME)
UT : 타임스탬프(TIMESTAMP)
S : 집합(SET)
MS : 다중집합(MULTISET)
SQ : 순차집합(LIST, SEQUENCE)
2) 구문
CAST (cast_operand AS cast_target)

cast_operand :
value expression
NULL

cast_target :
data type
cast_operand : 다른 타입으로 변환할 값을 선언한다.
cast_target : 변환할 타입을 지정한다.
3) 예제
다음은 VARCHAR로 저장되어 있는 단위가 kg인 기록을 FLOAT로 명시적으로 변환하여 반환하는 예제이다.
SELECT CAST(score AS FLOAT), unit FROM history WHERE unit = 'kg';
=== <Result of SELECT Command in Line 1> ===
cast(score as float)  unit
==========================
4.725000e+002         'kg'
3.750000e+002         'kg'
3.575000e+002         'kg'
3.250000e+002         'kg'
3.050000e+002         'kg'
3.050000e+002         'kg'
2.725000e+002         'kg'
2.750000e+002         'kg'
2.425000e+002         'kg'
2.375000e+002         'kg'
2.250000e+002         'kg'
2.100000e+002         'kg'
12 rows selected.
4) 주의사항
어떤 값 수식도 적절한 데이터 타입으로 명시적으로 변환될 수 있다. 대상 데이터 타입은 반드시 유효한 CUBRID 데이터 타입이어야 한다. CAST 변환은 같은 문자 코드 세트를 가지는 데이터 타입끼리만 허용된다. 예를 들어, 일본어 Kanji 가변 길의 문자열을 8비트 ASCII 고정 길의 문자열로 변환할 수 없다. 또한, 근사값으로 표현되는 수치형(예를 들어, FLOAT, DOUBLE)을 문자열로 변환할 때는 모든 유효 숫자를 표현할 수 있는 충분한 길이의 문자열을 입력해야 한다.

[원글링크] : https://www.linux.co.kr/home2/board/subbs/board.php?bo_table=lecture&wr_id=1623


이 글을 트위터로 보내기 이 글을 페이스북으로 보내기 이 글을 미투데이로 보내기

 
큐브리드