안녕하세요.
인포믹스는 자료형의 변환을 자동으로 해줍니다.
즉 문자열 자료형에 숫자형을 대입하면 문자열로 변환해 주고
숫자형에 문자형을 대입하면 숫자형으로 변환합니다.
그리고 직접변환을 하시고자 할 경우 인포믹스의 버전에 따라서
차이가 발생합니다. 9.x이전(IDS)의 버전에서는 형변환을 지원하지
않기때문에 stored procedure를 작성하여 변환할 수 있습니다.
ex)
create procedure to_integer(src varchar(255))
returns integer;
return src;
end procedure;
execute procedure to_integer('1234');
--> 1234
select to_integer('1234') from systables where tabid = 1;
--> 1234
9.x 버전부터는 자료형의 explicit casting을 지원하므로
select '1234'::integer from systables where tabid = 1;
--> 1234
select 컬럼명::integer from systables where tabid = 1;
--> ?
하면 변환이 가능할 경우 바로 변환되어 반환됩니다.
만약 변환이 되지 못할 경우 오류가 발생합니다.
변환이 되지 않는 데이터가 저장되어 있을 수도 있는 경우는
stored procedure나 function(9.x부터지원)을 사용하여
해당 오류를 catch하여 핸들링하면 됩니다.
ex)
create procedure to_integer(src varchar(255))
returns integer;
-- Character to numeric conversion error
on exception in (-1213)
return 0;
end exception
return src;
end procedure;
select to_integer('asdf') from systables where tabid = 1;
--> 0
그리고 날짜형 포맷팅을 위하여 9.2x버전부터
TO_DATE와 TO_CHAR라는 함수가 존재하며 사용법은 오라클의
TO_DATE와 TO_CHAR와 비슷하나 문자열 포맷방법이 ISO표준(?)을
사용합니다.
select TO_CHAR(TODAY, "%m-%Y-%d") from systables where tabid = 1;
--> 06-2000-20 (^_^;)
select TO_CHAR(CURRENT, "%S-%M-%H %m-%Y-%d") from systables where tabid = 1;
--> 29-02-14 06-2000-20 (T.T)
포맷 문자열에 관한 것은
$ man date
를 해보면 자세히 나와 있습니다.
*** 참고로 다음부터는 사용하시는 인포믹스의 버전을
*** 올려주시면 좀더 자세히 설명이 되지 않을까 생각됩니다.
*** 왜냐하면 9.x버전 이후는 ORDBMS로 바뀌어서...
*** $ onstat - 를 하면 버전정보가 쫘악~~~~
그럼...
> 인포믹스 함수중 문자를 숫자로...바꿔 주는 함수가 있을것 같은데요.
> 책을 찾아봐도, 없고해서, 이곳에 올립니다.
> 아시는 분 알려 주십시요...
>
> 오라클에는 TO_NUMBER 라는 함수가 있어, 숫자로 바꿔 주는데,
> 인포믹스에도 있을 것 같습니다.
|