그러나 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 |