[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.왜 VARCHAR 길이를 지정하지? 즉 :
왜 VARCHAR 길이를 지정하지? 즉 :
SELECT CAST('the quick brown fox jumped over the lazy dog' AS VARCHAR(45))
지금까지 왜 30, 그 유형에 대한 SQL Server의 기본 길이입니다.
CHAR 및 VARCHAR (Transact-SQL)를 참조하십시오에서 :
-
==============================
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.내 이론은 기본 30 문자 길이는 이름과 주소 라인 미국 우편 서비스의 사양에서 유래한다는 것입니다 :
내 이론은 기본 30 문자 길이는 이름과 주소 라인 미국 우편 서비스의 사양에서 유래한다는 것입니다 :
http://pe.usps.gov/cpim/ftp/pubs/pub28/pub28.pdf
-
==============================
4.그들은 30을 선택한 이유는 모르겠지만, 마이크로 소프트의 SQL 서버에서 개발 된 사이베이스 SQL 서버에서 동일했다. 이 SQL 표준에없는 것처럼 사람의 RDBMS의 특수성 것 같다, 다른 서버는 자신의 행동에 차이가 있습니다.
그들은 30을 선택한 이유는 모르겠지만, 마이크로 소프트의 SQL 서버에서 개발 된 사이베이스 SQL 서버에서 동일했다. 이 SQL 표준에없는 것처럼 사람의 RDBMS의 특수성 것 같다, 다른 서버는 자신의 행동에 차이가 있습니다.
-
==============================
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.변환 / 캐스트와 기본 크기는 메모리 할당 따라서 디폴트 값 (예 : 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)))
from https://stackoverflow.com/questions/359257/why-is-30-the-default-length-for-varchar-when-using-cast by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 C #에서 NVARCHAR (최대) SqlParameter에를 만드는 방법? [복제] (0) | 2020.06.14 |
---|---|
[SQL] 결과를 표시하지 않고 SQL 쿼리를 실행하는 방법 (0) | 2020.06.14 |
[SQL] MS SQL 예외 : '@ P0'근처의 구문이 잘못되었습니다 (0) | 2020.06.14 |
[SQL] SSIS 가장 좋은 방법은 대상 서버에 소스에서 N 테이블을로드 (0) | 2020.06.14 |
[SQL] Woocommerce의 일에 대한 주문 총 구매 금액을 받기 (0) | 2020.06.14 |