카테고리 없음

ISNUMERIC 함수 문제점??

Eastluck 2012. 9. 4. 16:07

안녕하세요. 이스트럭(강동운) 입니다.


오늘은 NUMERIC 함수의 문제점?에..  대해서 알아볼까 합니다.


우선 MSDN 부터...

ISNUMERIC(Transact-SQL): http://msdn.microsoft.com/ko-kr/library/ms186272.aspx


선식이형이 아주 깔끔하게 정리를 해주셨군요~ 

링크: http://www.sqler.com/470347



쉽게 말해서 1을 리턴하면 숫자이고, 0을 리턴하면 숫자가 아니라는 것이죠~!


그렇다면 아래 같은 어이없는? 상황을 한번 봐봅시다.



SELECT	ISNUMERIC('00a1') AS '00a1'
,		ISNUMERIC('00b1') AS '00b1'
,		ISNUMERIC('00c1') AS '00c1'
,		ISNUMERIC('00d1') AS '00d1'
,		ISNUMERIC('00e1') AS '00e1'
,		ISNUMERIC('00f1') AS '00f1'
결과 값이 어떻게 될까요?


오우! 00d1과 00e1이 숫.자.로 나왔습니다.


왜 이런 문제가 생길까요??


여기저기 구글링을 통해서 알아냈습니다~ㅋㅋ


바로.. 포트란 언어 때문에 그렇다고 합니다.


포트란에서 실수형 상수에서 지수형 표기법은 E와 D를 사용합니다.

D: (Double precision) => C언어에서는 DOUBLE

E: (Single precision) => C언에에서는 FLOAT


MSDN 보시면.. 아래의 타입일경우 1을 반환하는 것을 볼 수 있습니다.


int

numeric

bigint

money

smallint

smallmoney

tinyint

float

decimal

real


그렇다면 이 문제를 어떻게 해결해야 할까요?


추가로 함수를 구현한다거나 해야겠지요? ^^;



참고 링크: http://www.sql-server-performance.com/forum/threads/problem-with-isnumeric.11181/

포트란 참고링크: http://sciphy.tistory.com/1298


감사합니다. ^^


작성자: 이스트럭(강동운)

작성일: 2012-09-04