테이블 타입 정의를 위해 DB(AZURE SQL, MSSQL, AZURE SYNAPSE SQL) 데이터 TYPE정의 중
원천 데이터의 정보만을 가지고 정수부+소수부 길이를 추출하여, 테이블 정의를 해야되는 일이 생겼다. (파일형태)

그러나 MS-SQL쪽 DB에서 사용하기 편한 추출함수 or 인터넷 자료에서도 최적의 구문은 확인 되지 않았고, 
있더라도 일부 소수/정수부 길이가 잘못 도출되는 구문이 대부분 이었다. 

이에 따라 아래와 같이 최적의 길이를 도출해낼 수 있는 구문을 만들어 보았다. 
SELECT /*정수부MAX값+소수부MAX값=전체MAX값*/
       /*정수부MAX값*/ CASE WHEN MAX(CHARINDEX ('.',123.12345 )) = 0 THEN MAX(LEN(123.12345))
                            ELSE  MAX(CHARINDEX ('.',123.12345))-1 END    
         + /*소수부MAX값*/ MAX(LEN (SUBSTRING(CAST(FORMAT (123.12345, '0.####################') AS VARCHAR)
                                             ,CHARINDEX ('.',123.12345 ) + 1,
                         CASE WHEN CHARINDEX ('.', 123.12345) = 0 THEN 0
                              ELSE LEN (123.12345) END)))                AS 전체MAX값
     , /*정수부MAX값*/ CASE WHEN MAX(CHARINDEX ('.',123.12345 )) = 0 THEN MAX(LEN(123.12345))
                            ELSE  MAX(CHARINDEX ('.',123.12345))-1 END   AS 정수부MAX값
     , /*소수부MAX값*/ MAX(LEN (SUBSTRING(CAST(FORMAT (123.12345, '0.####################') AS VARCHAR)
                                         ,CHARINDEX ('.',123.12345 ) + 1,
                       CASE WHEN CHARINDEX ('.', 123.12345) = 0 THEN 0
                            ELSE LEN (123.12345) END)))                  AS 소수부MAX값

( ※123.12345 <- 컬럼명으로 치환 후 추가 사용필요 )

'DATA Log' 카테고리의 다른 글

SAS 변수 메타정보 DATABASE 변환을 위한정보  (0) 2022.12.29
SQL 쿼리 시각화 분석  (0) 2022.12.22
10의 승 명칭 확인  (0) 2022.09.07

+ Recent posts