2012-04-04 7 views
2

ntext 필드의 문자를 계산하고 싶습니다. Following Pinal Dave's advice, I am using datalength. 하지만이 기능은 내가 찾는 가치를 두 배로 늘리는 것 같습니다. 나는 단어로 필드의 값을 복사 한 문자를 셀 때, 나는 1502을 얻을하지만왜 SQL Server의 datalength 함수가 필드 길이의 두 배입니까?

select datalength(result) from myTable 

을 할 때 나는 3004 개 문자의 가치를 얻을.

왜?

+0

관련 없음 - 조심하십시오 (입력일). 이제 색인을 사용할 수 없습니다. entrydate> = '2012-01-01'및 entrydate < '2013-01-01'은 –

답변

7

유니 코드는 문자 당 2 바이트입니다. NText 필드는 유니 코드 문자열입니다. DataLength()은 필드를 저장하는 데 필요한 바이트 수를 반환하고 Len()은 문자 수를 반환합니다.

+0

이지만 텍스트 필드의 길이를 알고 싶다면 len()이 작동하지 않으므로 datalength가 붙어 있습니다. 따라서 유니 코드는 문자 당 2 바이트이므로 항상 문자의 데이터 길이를 가져야합니다. – bernie2436

+0

@ akh2103 - 'DataLength'의 결과를 2로 나누면 문자 수를 얻을 수 있습니다. 힌트/알림으로'DataLength (N'X ')'로 나눌 수 있습니다. – HABO

+0

그리고'Len()'은 뒤 공백을 무시합니다. – StevenWhite