반응형

[MSSQL - text, ntext 길이(바이트) 구하기]

컬럼의 데이타 타입이 text 또는 ntext 형일때는 Len() 함수 사용시 다음과 같은 오류가 납니다.

서버: 메시지 8116, 수준 16, 상태 2, 줄 1
len 함수의 1 인수에 대한 인수 데이터 형식 text이(가) 잘못되었습니다.

컬럼의 데이타 타입이 text, ntext 형일때는 DATALENGTH() 함수를 씁니다.

DATALENGTH( expression ): 식을 표시하는 데 사용된 바이트 수를 int 형으로 반환합니다. 괄호안에 expression은 모든 형식의 식을 의미합니다. DataLength() 함수는 가변 길이 데이터를 저장하는 ntext, text, image, nvarchar, varchar, varbinary 등의 데이터 형식에서 유효합니다.

아래의 예제는 Cus_As 테이블의 cus_as 컬럼의 길이가 36byte 보다 크면 substring() 함수를 이용해 36byte 까지 잘라내서 뒤에 ".." 을 붙이고 아니면 cus_as 컬럼의 길이대로 그냥 출력하는 짧은 예제입니다.

SELECT 
CASE WHEN DATALENGTH( cus_as ) > 36 THEN substring(cus_as, 1, 36 ) + '..' ELSE cus_as END as asText 
FROM Cus_As


반응형

+ Recent posts