[MSSQL] 수학함수를 이용한 index to excel column
2014. 11. 20. 12:19ㆍCoders
예전에 닷넷(C#)으로 만들었던 index를 엑셀 컬럼 코드로 변환하는 메서드를 MSSQL 함수로 필요하여 만들었습니다. 대충 만들고 적용해 보니 잘 작동 합니다.
사실, A to Z 또는 A to ZZ 까지는 간단하게 (예상치로) 만들 수 있으나, 여기에 소개되는 함수는, ZZZ 또는 그 이상 확장이 가능합니다.
FLOOR, LOG, POWER 라는 수학 관련 함수가 동원 되었습니다.
로그(LOG)함수까지 튀어 나와서 해당 식에 대한 설명은 하지 않습니다.
(네네, 솔직히 잘 모르고요, 이 역시 제 개인의 데이터 저장 공간으로 봐 주세요.)
CREATE FUNCTION [dbo].[ufn_get_translate_index_to_xls_col] ( @col_index INT ) RETURNS VARCHAR(10) AS BEGIN IF @col_index < 0 RETURN NULL; DECLARE @xls_col VARCHAR(10), @a INT, @x INT, @i INT; SET @xls_col = ''; SET @a = 26; SET @x = FLOOR(LOG( ( @col_index * ( @a - 1 ) / @a ) + 1, @a ) ); SET @col_index -= (POWER(@a, @x) - 1) * @a / (@a - 1); SET @i = @x + 1; WHILE ( @col_index + @i > 0 ) BEGIN SET @xls_col = CHAR(65 + @col_index % @a) + @xls_col; SET @col_index = @col_index / @a; SET @i = @i - 1; END; RETURN @xls_col; END GO
'Coders' 카테고리의 다른 글
[MSSQL] 인덱스 조각화(Fragmentation) 조회 (1) | 2014.12.05 |
---|---|
[C#] 윈도우 컨트롤의 이벤트 메서드를 하나로. (0) | 2014.10.31 |
[C#] 현재 Application Version 얻기 (0) | 2014.10.31 |