복붙노트

[SQL] 왜 30 CAST를 사용하는 경우 VARCHAR의 기본 길이 무엇입니까?

SQL

왜 30 CAST를 사용하는 경우 VARCHAR의 기본 길이 무엇입니까?

SQL 서버 2005이 쿼리에서

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

제공된 문자열이 더 많은 문자를 가지고있는 동안 길이가 30를 반환합니다. 이 기본이 될 것으로 보인다. 왜 30, 그리고 32 또는 2의 다른 전원?

[편집] 내가 VARCHAR에 캐스팅하지만이 빠른 let's 검사 - 뭔가 쿼리 때 난 항상 길이를 지정해야한다고 알고 있습니다. 질문 남아, 왜 30?

해결법

  1. ==============================

    1.왜 VARCHAR 길이를 지정하지? 즉 :

    왜 VARCHAR 길이를 지정하지? 즉 :

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

    지금까지 왜 30, 그 유형에 대한 SQL Server의 기본 길이입니다.

    CHAR 및 VARCHAR (Transact-SQL)를 참조하십시오에서 :

  2. ==============================

    2.(30)와하지 (32) 또는 제 2의 다른 전원은, 저장 크기는 길이 (30)의 일련의 바이트 저장 크기 32하게 VARCHAR (N)에 대해 N + 2 바이트 이유에 대한 질문에인지 될 수도 그들은 무엇을 바라 보았다?

    (30)와하지 (32) 또는 제 2의 다른 전원은, 저장 크기는 길이 (30)의 일련의 바이트 저장 크기 32하게 VARCHAR (N)에 대해 N + 2 바이트 이유에 대한 질문에인지 될 수도 그들은 무엇을 바라 보았다?

    그리고 의견의 일부에 대한 명확성의 단지 점 : 지정되지 않은 길이 VARCHAR 필드의 기본 길이는 N = 1입니다. 기본 문자열 길이는이 데이터 형식의 변환을위한 CAST 또는 CONVERT 수익률은 30입니다.

    아주 멋진 질문!

  3. ==============================

    3.내 이론은 기본 30 문자 길이는 이름과 주소 라인 미국 우편 서비스의 사양에서 유래한다는 것입니다 :

    내 이론은 기본 30 문자 길이는 이름과 주소 라인 미국 우편 서비스의 사양에서 유래한다는 것입니다 :

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

  4. ==============================

    4.그들은 30을 선택한 이유는 모르겠지만, 마이크로 소프트의 SQL 서버에서 개발 된 사이베이스 SQL 서버에서 동일했다. 이 SQL 표준에없는 것처럼 사람의 RDBMS의 특수성 것 같다, 다른 서버는 자신의 행동에 차이가 있습니다.

    그들은 30을 선택한 이유는 모르겠지만, 마이크로 소프트의 SQL 서버에서 개발 된 사이베이스 SQL 서버에서 동일했다. 이 SQL 표준에없는 것처럼 사람의 RDBMS의 특수성 것 같다, 다른 서버는 자신의 행동에 차이가 있습니다.

  5. ==============================

    5.마이크로 소프트는 SQL 서버, 액세스 '제트 DB 엔진과 자사 제품의 다른 여러 가지의 CHAR 및 VARCHAR의 기본 길이로 (30)를 선택했다. 이름이나 주소 열의 기본 길이가 초기에 (30) 기타 DB의 Informix의 기본 같은 20 CHAR 및 255 VARCHAR에 대한 설정되었을 때 그것은 옛날에서 유래.

    마이크로 소프트는 SQL 서버, 액세스 '제트 DB 엔진과 자사 제품의 다른 여러 가지의 CHAR 및 VARCHAR의 기본 길이로 (30)를 선택했다. 이름이나 주소 열의 기본 길이가 초기에 (30) 기타 DB의 Informix의 기본 같은 20 CHAR 및 255 VARCHAR에 대한 설정되었을 때 그것은 옛날에서 유래.

  6. ==============================

    6.변환 / 캐스트와 기본 크기는 메모리 할당 따라서 디폴트 값 (예 : 30) 2의 전원 관련이 없습니다과는 아무 상관이 없습니다.

    변환 / 캐스트와 기본 크기는 메모리 할당 따라서 디폴트 값 (예 : 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)))
    
  7. from https://stackoverflow.com/questions/359257/why-is-30-the-default-length-for-varchar-when-using-cast by cc-by-sa and MIT license