본문 바로가기
IT/MS SQL

MSSQL 형변환 오류 벗어나기 TRY_CONVERT

by heavenLake 2022. 7. 21.
반응형

 

TRY_CONVERT : CONVERT 시에 나오는 모든 에러를 NULL로 처리하여 반환한다.

 

가끔 데이터 형변환을 하거나 타입별로 형변환을 처리하는데 기존 데이터가 해당하는 타입에 맞지 않는경우

에러를 뱉어 내며, 해당하는 데이터를 찾는건 매우 힘든 일이다.

(ex: convert(date,'1') 과 같이 특정 문제가 되는 데이터를 찾아서 바꿔줘야하는데 데이터가 몇십만건이 될 경우 잡아내기 매우 힘듬..)

 

고로 TRY_CONVERT를 사용하여 해당하는 데이터는 무시하여 정보를 추출하도록 한다.

 

단, TRY_CONVERT의 경우 MS SQL 2005버전 부터 지원하며 지금 현재 나의 데이터베이스가 2005 버전 이전에서 만들어졌고, 해당하는 데이터베이스를 2016등의 버전에 IMPORT할 경우 호환성 정보또한 과거정보를 기준으로 복구된다.

 

만약 현재 MSSQL이 2005이상인데도 불구하고 해당하는 함수를 찾을 수 없다는 에러가 발생할 경우,

 

아래와 같이 해결해보자.

1
2
3
4
5
6
7
8
9
10
11
 
/*현재 데이터베이스의 호환성 정보 보기*/
exec sp_dbcmptlevel 'databaseName'
 
/*mssql 호환성 버전 수정  *10단위, 100, 110, 120....*/
alter database databaseName set compatibility_level = 130
 
/*사용 : 두 일자간 사이값을 가져올때 해당 하는 데이터가 데이트 타입과 어긋나는 경우 해당 데이터를 찾기가 매우 힘듬*/
select case when t1.sdt>0 and t1.edt > 0 then datediff(day,try_convert(date,t1.sdt),try_convert(date,t1.edt)) else '' 
end as ftbwdt 
  from t1
 

 

출처:

https://code-monkey7.tistory.com/15

 

[MSSQL] try_convert 사용하여 지긋지긋한 형변환 에러를 탈출하자.

TRY_CONVERT : CONVERT 시에 나오는 모든 에러를 NULL로 처리하여 반환한다. 가끔 데이터 형변환을 하거나 타입별로 형변환을 처리하는데 기존 데이터가 해당하는 타입에 맞지 않는경우 에러를 뱉어 내

code-monkey7.tistory.com

 

반응형

댓글