반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Visual Studio 강제 삭제
- javascript
- Selenium 환경
- SQLP
- 프록시 예제
- 업무 자동화
- Visual Studio 2015 삭제
- Vue.config
- Visual Studio 2015 강제 삭제
- Selenium 설치
- 웹 자동화
- Visual Studio 패키지에 실패했습니다.
- Vue configureWebpack
- Tomcat Error
- 웹 크롤링
- 리버스 프록시 예제
- 디자인 패턴 사례
- MSSQL 동적 쿼리
- vue.js
- MSSQL 문자열
- Vue3 configureWebpack
- vue
- spring
- Visual Studio 재설치
- tomcat
- Visual Studio 2015 설치
- .NET Core
- Nginx Reverse Proxy
- .NET Core Proxy
- vue3
Archives
- Today
- Total
금백조의 개발 블로그
[MSSQL]ISNUMERIC을 이용한 숫자, 문자 판단 및 주의사항 본문
반응형
서론
현업에서 프로젝트 개발 중에 NVARCHAR 문자열 컬럼에 숫자가 들어올 경우 세 자리마다 콤마( , )를 표기해줘야 하는 요구사항이 있었습니다. 해당 문자열이 숫자인지, 문자인지를 판단하여 세 자리마다 콤마를 표기해줘야 했으므로 ISNUMERIC을 사용하여 해결했습니다. 이 과정 속에서 알게 된 ISNUMERIC을 이용한 숫자, 문자 판단과 주의사항을 예제를 통해 알아보겠습니다.
본론
[구문 형식]
ISNUMERIC([숫자, 문자를 판단할 컬럼])
[특징]
INPUT 컬럼이 문자일 경우 0, 숫자일 경우 1을 반환합니다.
[주의사항]
+,- 기호와 같은 숫자가 아닌 일부 문자 또는 달러($)와 같은 통화 기호도 1을 반환하기 때문에 주의가 필요합니다. 따라서 입력되는 문자열 데이터가 (+), (-) 기호나 ($) 달러와 같은 통화 기호가 들어올 경우 예외처리를 해주어야 합니다.
[CASE별 ISNUMERIC 반환 값 확인 예제]
--CASE별 ISNUMERIC 반환 확인 예제
SELECT ISNUMERIC(N'문자1') AS EXAMPLE_COLUMN1--문자열이므로 0반환
SELECT ISNUMERIC(N'123456789') AS EXAMPLE_COLUMN2--숫자이므로 1반환
SELECT ISNUMERIC(N'+123456789') AS EXAMPLE_COLUMN3--(+)기호 포함되는 숫자여도 1반환
SELECT ISNUMERIC(N'-123456789') AS EXAMPLE_COLUMN4--(-)기호 포함되는 숫자여도 1반환
SELECT ISNUMERIC(N'+') AS EXAMPLE_COLUMN5--(+)기호만으로도 1반환
SELECT ISNUMERIC(N'-') AS EXAMPLE_COLUMN6--(-)기호만으로도 1반환
SELECT ISNUMERIC(N'$') AS EXAMPLE_COLUMN7--통화 기호만으로도 1반환
[주의사항을 고려한 ISNUMERIC 활용 예제]
--ISNUMERIC 활용 예제
--(+), (-)기호, 통화 기호 자체만으로도 ISNUMERIC은 1을 반환하니 NOT IN으로 예외처리
--안할경우 기호를 NUMERIC으로 CONVERT 하므로 에러 발생
--나머지는 ISNUMERIC으로 판단하여 숫자일경우 세자리 콤마 넣기
SELECT CASE
WHEN NVARCHAR_COLUMN NOT IN ( '+', '-', '$' )
AND ISNUMERIC(NVARCHAR_COLUMN) = 1
THEN FORMAT(CONVERT(NUMERIC(18, 0), NVARCHAR_COLUMN), '##,##0')
ELSE NVARCHAR_COLUMN
END AS RESULT_COLUMN
FROM (SELECT N'문자1' AS NVARCHAR_COLUMN--일반적인 문자
UNION ALL
SELECT N'+'--(+)기호 문자
UNION ALL
SELECT N'123456789'--숫자
UNION ALL
SELECT N'-123456789'--(-)기호를 포함한 숫자
UNION ALL
SELECT N'$'--통화 기호 문자
)A
결론
오늘은 평소에도 간간히 쓰던 ISNUMERIC에 대해 정리하는 시간을 가졌습니다. 정리한 내용으로 다른 프로젝트에도 필요시 활용해야겠습니다!
Reference
[ISNUMERIC(Transact-SQL)]
docs.microsoft.com/ko-kr/sql/t-sql/functions/isnumeric-transact-sql?view=sql-server-ver15
[MSSQL 숫자 3자리 콤마 넣기 또는 삭제하기]
반응형
'Database > SQL Server(MSSQL)' 카테고리의 다른 글
[MSSQL]EXCEPT를 이용한 차집합 구하기(MSSQL 차집합) (0) | 2021.03.30 |
---|---|
[MSSQL]SELECT, WHERE, ORDER BY절에서 CASE문 활용하기(SELECT CASE, WHERE CASE, ORDER BY CASE) (0) | 2021.03.28 |
[MSSQL]SELECT INTO문을 통한 임시테이블 생성(SELECT INTO절) (0) | 2021.03.04 |
[MSSQL]PIVOT을 이용하여 세로를 가로로 변환 방법(행 열 변환) (4) | 2021.02.28 |
[MSSQL]행 데이터를 문자열로 합치기 (0) | 2021.02.18 |