CAST는 한 데이터 유형에서 다른 데이터 유형으로 하나 이상의 값을 변환하는 복합 함수입니다.
CAST는 한 데이터 유형에서 다른 데이터 유형으로 하나 이상의 값을 변환합니다. 예를 들면, 일반 XML 메시지를 처리할 때 CAST 함수를 사용할 수 있습니다. 예를 들면, XML 메시지의 모든 필드는 문자 값을 보유하므로, 필드에서 산술 계산이나 data/time 비교를 수행하려는 경우에는 CAST를 사용하여 이 필드의 문자열 값을 적절한 유형의 값으로 변환할 수 있습니다.
모든 변환이 지원되는 것은 아닙니다. 지원되는 변환의 목록은 지원되는 캐스트를 참조하십시오.
CAST는 둘 이상의 값을 포함할 수 있는 첫 번째 매개변수(source_expression)를 두 번째 매개변수로 지정된 데이터 유형(DataType)으로 리턴합니다. ]모든 경우에 소스 표현식이 널(null)인 경우 결과는 널(null)입니다. 평가된 소스 표현식이 대상 데이터 유형과 호환되지 않거나 소스 표현식의 형식이 잘못된 경우 런타임 오류가 생성됩니다.
CCSID 절은 문자열 데이터 유형 중 하나로의 변환에만 사용됩니다. 소스 또는 대상 문자열의 코드 베페이지를 지정할 수 있습니다.
CCSID 표현식은 INT 유형의 값으로 평가되는 표현식일 수 있습니다. CCSID에 대한 정상 WebSphere Message Broker 규칙에 따라 해석됩니다. 유효한 값 목록은 지원되는 코드 페이지를 참조하십시오.
DEFAULT 절은 리턴할 마지막 값을 제공하여 CAST문에서 예외 처리를 피하는 방법을 제공합니다.
DEFAULT expression은 DataType 매개변수에서 지정된 것과 동일한 데이터 유형을 리턴하는 유효한 ESQL 표현식이어야 하며 그렇지 않으면 예외가 발생합니다.
CCSID, ENCODING 및 FORMAT 매개변수는 DEFAULT 표현식의 결과에 적용되지 않으며 따라서 이 표현식은 올바른 CCSID, ENCODING 및 FORMAT으로 되어 있어야 합니다.
문자열 데이터 유형과 숫자 또는 날짜-시간 데이터 유형 간의 변환의 경우 선택적 FORMAT 표현식을 제공할 수 있습니다. 문자열 유형에서 변환하는 경우 FORMAT은 대상 데이터 유형을 채우기 위해 소스 문자열을 구문 분석하는 방법을 정의합니다. 문자열 유형으로 변환하는 경우 소스 표현식의 데이터를 대상 문자열에서 형식화하는 방법을 정의합니다.
FORMAT은 날짜-시간 및 숫자 변환에 다른 유형의 표현식을 사용합니다. 그러나 문자열로 변환되는지 아니면 문자열에서 변환되는지 여부에 상관 없이 동일한 FORMAT 표현식을 사용할 수 있습니다.
숫자 데이터 유형으로의 변환에 대한 자세한 정보는 문자열로 숫자 형식화 및 구문 분석을 참조하십시오. 날짜-시간 데이터 유형으로의 변환에 대한 자세한 정보는 문자열로 dateTimes 형식화 및 구문 분석을 참조하십시오.
FORMAT 표현식은 ICU 및 Microsoft Excel과 같은 다른 많은 제품에서 사용된 표현식에 해당합니다.
DECLARE source DECIMAL 31415.92653589; DECLARE target CHARACTER; DECLARE pattern CHARACTER '#,##0.00'; SET target = CAST(source AS CHARACTER FORMAT pattern); -- target is now "31,415.93"
DECLARE now CHARACTER = CAST(CURRENT_TIMESTAMP AS CHARACTER FORMAT "yyyyMMdd-HHmmss"); -- target is now "20041007-111656" (in this instance at least)
DECLARE source CHARACTER '01-02-03'; DECLARE target DATE; DECLARE pattern CHARACTER 'dd-MM-yy'; SET target = CAST(source AS DATE FORMAT pattern); -- target now contains Year=2003, Month=02, Day=01
DECLARE source CHARACTER '12 Jan 03, 3:45pm'; DECLARE target TIMESTAMP; DECLARE pattern CHARACTER 'dd MMM yy, h:mma'; SET target = CAST(source AS TIMESTAMP FORMAT pattern); -- target now contains Year=2003, Month=01, Day=03, Hour=15, Minute=45, Seconds=58 -- (seconds taken from CURRENT_TIME since not present in input)
DECLARE source DECIMAL -54231.122; DECLARE target CHARACTER; DECLARE pattern CHARACTER '#,##0.00;(#,##0.00)'; SET target = CAST(source AS CHARACTER FORMAT pattern); -- target is now "£(54,231.12)"
DECLARE source CHARACTER '16:18:30'; DECLARE target TIME; DECLARE pattern CHARACTER 'hh:mm:ss'; SET target = CAST(source AS TIME FORMAT pattern); -- target now contains Hour=16, Minute=18, Seconds=30
CAST(7, 6, 5 AS DATE); CAST(7.4e0, 6.5e0, 5.6e0 AS DATE); CAST(7.6, 6.51, 5.4 AS DATE);
CAST(9, 8, 7 AS TIME); CAST(9.4e0, 8.6e0, 7.1234567e0 AS TIME); CAST(9.6, 8.4, 7.7654321 AS TIME);
CAST(DATE '0001-02-03', TIME '04:05:06' AS TIMESTAMP); CAST(2, 3, 4, 5, 6, 7.8 AS TIMESTAMP);
CAST(DATE '0001-02-03', TIME '04:05:06' AS TIMESTAMP); CAST(2, 3, 4, 5, 6, 7.8 AS TIMESTAMP);
CAST(DATE '0002-03-04', GMTTIME '05:06:07' AS GMTTIMESTAMP); CAST(3, 4, 5, 6, 7, 8 AS GMTTIMESTAMP); CAST(3.1e0, 4.2e0, 5.3e0, 6.4e0, 7.5e0, 8.6789012e0 AS GMTTIMESTAMP); CAST(3.2, 4.3, 5.4, 6.5, 7.6, 8.7890135 AS GMTTIMESTAMP);
CAST(1234 AS INTERVAL YEAR); CAST(32, 10 AS INTERVAL YEAR TO MONTH ); CAST(33, 11 AS INTERVAL DAY TO HOUR ); CAST(34, 12 AS INTERVAL HOUR TO MINUTE); CAST(35, 13 AS INTERVAL MINUTE TO SECOND); CAST(36, 14, 10 AS INTERVAL DAY TO MINUTE); CAST(37, 15, 11 AS INTERVAL HOUR TO SECOND); CAST(38, 16, 12, 10 AS INTERVAL DAY TO SECOND);
CAST(2345.67e0 AS INTERVAL YEAR ); CAST(3456.78e1 AS INTERVAL MONTH ); CAST(4567.89e2 AS INTERVAL DAY ); CAST(5678.90e3 AS INTERVAL HOUR ); CAST(6789.01e4 AS INTERVAL MINUTE); CAST(7890.12e5 AS INTERVAL SECOND); CAST(7890.1234e0 AS INTERVAL SECOND);
CAST(2345.67 AS INTERVAL YEAR ); CAST(34567.8 AS INTERVAL MONTH ); CAST(456789 AS INTERVAL DAY ); CAST(5678900 AS INTERVAL HOUR ); CAST(67890100 AS INTERVAL MINUTE); CAST(789012000 AS INTERVAL SECOND); CAST(7890.1234 AS INTERVAL SECOND);
CAST(INTERVAL '1234' YEAR AS FLOAT); CAST(INTERVAL '2345' MONTH AS FLOAT); CAST(INTERVAL '3456' DAY AS FLOAT); CAST(INTERVAL '4567' HOUR AS FLOAT); CAST(INTERVAL '5678' MINUTE AS FLOAT); CAST(INTERVAL '6789.01' SECOND AS FLOAT);
CAST(INTERVAL '1234' YEAR AS DECIMAL); CAST(INTERVAL '2345' MONTH AS DECIMAL); CAST(INTERVAL '3456' DAY AS DECIMAL); CAST(INTERVAL '4567' HOUR AS DECIMAL); CAST(INTERVAL '5678' MINUTE AS DECIMAL); CAST(INTERVAL '6789.01' SECOND AS DECIMAL);
CAST(7, 6, 32 AS DATE DEFAULT DATE '1947-10-24');
CAST(2, 3, 4, 24, 6, 7.8 AS TIMESTAMP DEFAULT TIMESTAMP '1947-10-24 07:08:09');
BEGIN DECLARE EXIT HANDLER FOR SQLSTATE LIKE '%' BEGIN SET OutputRoot.XML.Data.Date.FromIntegersInvalidCast = 'Exception thrown'; END; DECLARE Dummy CHARACTER CAST(7, 6, 32 AS DATE); END;
BEGIN DECLARE EXIT HANDLER FOR SQLSTATE LIKE '%' BEGIN SET OutputRoot.XML.Data.Timestamp.FromIntegersInvalidCast = 'Exception thrown'; END; DECLARE Dummy CHARACTER CAST(2, 3, 4, 24, 6, 7.8 AS TIMESTAMP); END;