개요
MSSQL 숫자를 문자로, 문자를 숫자로 변환하는 법은 여러가지가 있습니다. 형변환을 해주는 함수인 CAST 와 CONVERT 가 가장 기본적인 방법이구요, 문자를 숫자로 변환하되, 소수점을 비롯한 특정 형식이 필요한 경우는 FORMAT , STR 함수를 이용하는 방법이 있습니다.
MSSQL 숫자를 문자로 바꾸는 기본적인 방법
아래는 CAST 와 CONVERT 의 기본적인 쿼리 샘플입니다.
SELECT CAST( 1234.456 AS NVARCHAR(10)) AS R_CAST
, CONVERT( NVARCHAR(10), 1234.456) AS R_CONVERT

서식을 지정해서 문자로 바꾸는 방법
서식을 지정해서 바꿀 때는 FORMAT 함수를 이용하면 콤마와 소수점을 포함한 서식을 지정해서 문자로 변환할 수 있습니다.
SELECT FORMAT(123456.12345, '#,#.##') + 'A'
, FORMAT(123456.12345, '0,0.00') + 'A'

서식은 필요없고, 소수점 처리만 하는 경우
SELECT STR(123456.567, 20, 2)

숫자를 문자로 바꿔서 정렬
-- MSSQL 숫자를 문자로
-- 샘플데이터 생성
CREATE TABLE #T (
COL INT
)
INSERT INTO #T VALUES ( 1 )
INSERT INTO #T VALUES ( 2 )
INSERT INTO #T VALUES ( 3 )
INSERT INTO #T VALUES ( 4 )
INSERT INTO #T VALUES ( 5 )
INSERT INTO #T VALUES ( 6 )
INSERT INTO #T VALUES ( 7 )
INSERT INTO #T VALUES ( 8 )
INSERT INTO #T VALUES ( 9 )
INSERT INTO #T VALUES ( 10 )
INSERT INTO #T VALUES ( 11 )
INSERT INTO #T VALUES ( 12 )
INSERT INTO #T VALUES ( 13 )
INSERT INTO #T VALUES ( 14 )
INSERT INTO #T VALUES ( 15 )
INSERT INTO #T VALUES ( 16 )
INSERT INTO #T VALUES ( 17 )
INSERT INTO #T VALUES ( 18 )
INSERT INTO #T VALUES ( 19 )
INSERT INTO #T VALUES ( 20 )
-- 쿼리1
SELECT * FROM #T ORDER BY COL
-- 쿼리2
SELECT * FROM #T ORDER BY CAST(COL AS NVARCHAR(10))

숫자를 문자로 변경 또는 반대의 경우 ORDER BY 절에서 형변환을 해주면 됩니다. 위의 그림에서 첫번째는 쿼리1을 실행한 결과, 두번째는 쿼리2를 실행한 결과입니다.
다만 두번째 쿼리의 경우 ORDER BY 를 위해서 형변환이 일어나기때문에 성능에 영향이 있는 지 확인해보셔야 합니다. 아마도 쿼리한 결과를 정렬할때에만 형변환을 할 것 같지만( 추측입니다. 반드시 성능 확인 필요), TOP n 이 있을 경우에는 전체를 형변환 해야 할거고, 결과만 형변환하더라도 결과가 많다면 성능에 상당한 영향이 있을 수도 있습니다.
문자를 숫자로 바꾸는 경우
문자를 숫자로 바꾸는 경우는 CAST 및 CONVERT 를 사용하되, 변환할 숫자형 데이터타입만 잘 지정하면 됩니다.
다만 문자를 숫자로 바꿀 때에는 과연 바꾸려고 하는 문자열 값이 해당 숫자형 타입으로 변환이 가능한지를 체크하는 것이 좋습니다. 원래 들어갈 것으로 예상하지 못했던 값이 들어갈 수도 있고, 기타 여러가지 상황이 있을 수 있어서요…
ISNUMERIC 은 NUMBER 타입으로 변환이 가능하면 1을 불가능하면 0을 리턴합니다. 그래서 숫자로 변환할 때에는 ISNUMERIC 으로 체크해서 변환이 가능할 때에만 변환하도록 합니다.
아니면 TRY_CAST, TRY_CONVERT 를 사용하는 방법도 있습니다. 이 함수들은 해당 자료형으로 변환이 가능하면 변환된 값을, 불가능하면 NULL 값을 반환합니다.
SELECT ISNUMERIC('1234.456')
, TRY_CAST('1234.456' AS INT)
, TRY_CAST('1234.456' AS NUMERIC(10,4))
, TRY_CONVERT(INT, '1234.456' )
, TRY_CONVERT(NUMERIC(10,4), '1234.456')
, CAST('1234.456' AS NUMERIC(10,4))
, CONVERT(NUMERIC(10,4),'1234.456' )

관련 링크
CONVERT 함수 링크
FORMAT 함수 링크
CONVERT 함수 MS 문서 링크
FORMAT 함수 MS 문서 링크