programing

CAST를 사용할 때 VARCHAR의 기본 길이가 30인 이유는 무엇입니까?

newstyles 2023. 7. 13. 20:44

CAST를 사용할 때 VARCHAR의 기본 길이가 30인 이유는 무엇입니까?

SQL Server 2005에서 이 쿼리는

select len(cast('the quick brown fox jumped over the lazy dog' as varchar))

제공된 문자열의 문자 수가 더 많은 반면 길이로 30을 반환합니다.이것이 기본값인 것 같습니다.왜 32나 다른 2의 거듭제곱이 아닌 30일까요?

[편집] 바샤르에 캐스팅할 때 항상 길이를 지정해야 한다는 것을 알고 있지만, 이것은 빠른 확인 질문이었습니다.질문이 남아있는데, 왜 30개죠?

바하 길이를 지정하는 것이 어떻습니까?i:

SELECT CAST('the quick brown fox jumped over the lazy dog' AS VARCHAR(45))

30은 SQL Server에서 해당 유형의 기본 길이입니다.

charvarchar(Transact-SQL)에서 다음을 수행합니다.

n이 데이터 정의 또는 변수 선언 문에 지정되지 않은 경우 기본 길이는 1입니다.CAST 및 CONVERT 기능을 사용할 때 n을 지정하지 않으면 기본 길이는 30입니다.

왜 32 또는 2의 다른 거듭제곱이 아닌 30인지에 대한 질문에서 스토리지 크기는 varchar(n)에 대해 n + 2바이트이며, 이는 길이가 30인 문자열에 대해 바이트 스토리지 크기 32를 만듭니다.아마도 이것이 그들이 본 것일까요?

그렇다면 일부 의견에 대한 명확한 요점입니다.지정되지 않은 길이 막대 필드의 기본 길이는 n=1입니다.CAST 또는 CONVERT가 이 데이터 유형의 변환에 대해 반환하는 기본 문자열 길이는 30입니다.

아주 멋진 질문입니다!

Microsoft는 SQL Server, Access의 Jet DB 엔진 및 기타 여러 제품에서 CHAR 및 VARCHAR의 기본 길이로 30을 선택했습니다.이름 또는 주소 열의 기본 길이가 처음에 30으로 설정된 이전 날짜에서 시작됩니다.Informix와 같은 다른 DB는 기본적으로 CHAR의 경우 20, VARCHAR의 경우 255로 설정됩니다.

기본 30자 길이는 이름 및 주소 라인에 대한 U.S. Postal Service 사양에서 비롯되었다는 것이 제 이론입니다.

http://pe.usps.gov/cpim/ftp/pubs/pub28/pub28.pdf

왜 30개를 선택했는지는 모르겠지만 마이크로소프트의 SQL 서버가 개발된 Sybase SQL 서버에서도 마찬가지였습니다.이는 SQL 표준에 없는 RDBMS의 특징이며, 다른 서버들은 동작이 다릅니다.

convert/cast를 사용하는 기본 크기는 메모리 할당과 관련이 없으므로 기본값(즉, 30)은 2의 거듭제곱과 관련이 없습니다.

왜 30인지와 관련하여, 이것은 처음 30자의 기본 데이터를 포함하도록 이 기본값을 제공하는 마이크로소프트의 지침입니다.http://msdn.microsoft.com/en-us/library/ms176089.aspx

변환/캐스트 프로세스 중에는 항상 길이를 변경할 수 있지만,

select len(cast('the quick brown fox jumped over the lazy dog' as varchar(max)))

언급URL : https://stackoverflow.com/questions/359257/why-is-30-the-default-length-for-varchar-when-using-cast