안녕하세요? SQL 프론티어 3기 쓸만한게없네(윤선식)입니다.

 

지난 번 ISDATE 함수에 이은 ISNUMERIC 함수 설명입니다. ^^.

 http://www.sqler.com/467518

 

ISNUMERC 함수는 ISDATE(표현) 이런 식으로 사용하고, 숫자형식인 경우 1 숫자형식이 아닌 경우 0을 반환합니다.

 

SELECT

       ISNUMERIC('1234') AS '1',

       ISNUMERIC('A587') AS '2',

       ISNUMERIC('222!') AS '3',

       ISNUMERIC('123l123') AS '4',

       ISNUMERIC('157.123') AS '5',

       ISNUMERIC(NULL) AS '6',

       ISNUMERIC('') AS '7',

       ISNUMERIC('0') AS '8',

       ISNUMERIC('12345678901234567890') AS '9',

       ISNUMERIC('1234567890123456789012345678901234567890123456789012345678901234567890') AS '10',

       ISNUMERIC('1.234567890123456789012345678901234567890123456789012345678901234567890') AS '11'

ISNUMERIC.png

 

1 : ISNUMERIC('1234') AS '1' : 숫자 형태입니다. "1"을 반환합니다.

2 : ISNUMERIC('A587') AS '2' : 문자가 포함되어 있습니다. "0"을 반환합니다.

3 : ISNUMERIC('222!') AS '3' : 특수문자가 포함되어 있습니다. "0"을 반환합니다.

4 : ISNUMERIC('123l123') AS '4' : 지난 번 ISDATE 함수 속임수 처럼 중간에 1이 아닌 L 이 있습니다. "0"을 반환합니다.

5 : ISNUMERIC('157.123') AS '5' : 소숫점을 포함해 봅니다. 숫자형태로 인식하여 "1"을 반환합니다.

6 : ISNUMERIC(NULL) AS '6' : NULL은 숫자로 인식하지 않습니다. "0"을 반환합니다.

7 : ISNUMERIC('') AS '7' : 공백도 숫자로 인식하지 않습니다. "0"을 반환합니다.

8 : ISNUMERIC('0') AS '8' : 0 은 숫자입니다. "1"을 반환합니다.

9 : ISNUMERIC('12345678901234567890') AS '9' : BIGINT 보다 큰 수를 대입해 봅니다. 숫자로 인식하여 "1"을 반환합니다.

10 : ISNUMERIC('1234567890123456789012345678901234567890123456789012345678901234567890') AS '10' : 매우 큰 숫자형태를 대입해 봅니다. 이 또한 형태가 숫자이어서 전체 자릿수와 상관없이 숫자로 인식합니다. 그러므로, "1"을 반환합니다.

11 : ISNUMERIC('1.234567890123456789012345678901234567890123456789012345678901234567890') AS '11' : 매우 큰 소숫점 형태를 대입해 봅니다. 이 또한 형태가 숫자이어서 전체 소숫점 자릿수와 상관없이 숫자로 인식합니다. 그러므로, "1"을 반환합니다.

 

결론적으로 숫자로 인식할 수 있는 모든 문자를 숫자형태로 보고 있습니다.

실무에서 사용할 때에는 단순하게 사용할 것이 아니라 DataType을 반드시 확인하고 사용해야 할 듯 합니다.

 

감사합니다.

+ Recent posts