|
|
게시됨 2018. 6. 13. 오전 11:07:11
|
|
|

첫째, varchar(max)는 마이크로소프트가 사용하는 텍스트 데이터 타입의 대체 수단입니다.텍스트와 같은 오래된 필드 유형은 이후 버전에서 취소될 수 있습니다。 그래서 어떤 텍스트를 저장할 수 있는지, varchar(max)는 확실히 저장할 수 있습니다. 사실, 저장할 수 있는 문자 수가 매우 많습니다. 저장할 수 있는 4억 2천만 문자는 접근하기 어렵고, 저는 그것이 접근하기 어려운 부분이라고 생각합니다.
전에야 알았어텍스트와 이미지는 SQL Server에 의해 더 이상 사용되지 않을 수 있는 데이터 타입입니다, 하지만 구체적인 이유는 명확하지 않다. 오늘 읽으면서 텍스트와 varchar(max) 및 nvarchar(max)의 차이를 발견했는데, 주로 연산자의 제한 때문에 텍스트는 다음 함수들만 사용할 수 있다:
| 기능 | 진술 | | 데이터길이 | 읽기 텍스트 | | 패텍스(PATINDEX) | 텍스트 크기 집합 | | 서브스트링 | 업데이트 텍스트 | | 텍스트 PTR | 쓰기 텍스트 | | 텍스트유효 | |
예를 들어, "텍스트" 열의 데이터 타입이 텍스트라면, "="와 "left()"와 같은 연산에는 사용할 수 없습니다. 예를 들어 다음 예시와 같습니다:
테이블을 만들고 데이터를 채우세요:
만약 존재한다면(sysobjects에서 * 선택, 여기서 id = OBJECT_ID('[asdf]') 및 OBJECTPROPERTY(id, 'IsUserTable') = 1)
드롭 테이블 [asdf]
테이블 생성 [asdf] (
[흥미롭음] [내성] 항등성 (1, 1) null이 아님,
[본문] [본문] NULL ,
[varcharmax] varchar(max) NULL)
ALTER 테이블 [ASDF] ADD STATUS [PK_asdf] 기본 키 비클러스터 ([inttest])
IDENTITY_INSERT [asdf] 켜기
삽입 [asdf] ( [ [inttest] , [text] , [varcharmax] ) 값 ( 1 , '1111111', '1111111')
IDENTITY_INSERT [asdf] 꺼지세요
쿼리를 실행하세요:
문의 1: 선택 [텍스트]
,[바르차막스]
[testDB]에서. [dbo]. [asdf]
여기서
[텍스트] ='11111' 그리고
[바르차막스] = '1111111'
다음과 같은 오류 메시지가 나타납니다:
Msg 402, 16층, State 1, 1호선
데이터 타입 text와 varchar는 동등한 연산자에서는 호환되지 않습니다.
문의 2: 선택 [텍스트]
,[바르차막스]
[testDB]에서. [dbo]. [asdf]
여기서
[바르차막스] = '1111111'
성공적으로 실행될 수 있습니다
MS SQL2005 이상에서는 큰 값의 데이터 타입(varchar(max), nvarchar(max), varbinary(max))를 추가하세요. 큰 값 데이터 타입은 최대 2^30-1바이트의 데이터를 저장할 수 있습니다.
이 데이터 타입은 더 작은 데이터 타입인 varchar, nvarchar, varbinary와 동작적으로 동일합니다.
마이크로소프트의 주장은 이전의 텍스트, ntext, 이미지 데이터 타입을 이 데이터 타입으로 대체하겠다는 것이며, 이들 간의 대응은 다음과 같습니다:
varchar(max)-------text;
nvarchar(max)-----ntext;
Varbinary(Max)----image.
대용량 데이터 유형은 이전보다 훨씬 유연하게 다룰 수 있습니다. 예를 들어, 텍스트는 이전에는 'like' 사용할 수 없지만, varchar(max) 이후에는 이러한 문제가 없습니다. 왜냐하면 varchar(max)는 동작 면에서 varchar(n)와 같기 때문에, varcahr에서 사용할 수 있는 것을 varchar(max)에서도 사용할 수 있기 때문입니다.
또한, 삽입 및 삭제된 테이블에서 큰 값의 데이터 타입 열 참조에 대해 AFTER 트리거 사용을 지원합니다. 글은 좋지 않다. 요약하자면, 큰 값 데이터 타입을 사용한 후 나는 "허리가 더 이상 아프지 않고, 다리도 아프지 않으며, 한 숨 쉬면 6층까지 올라갈 수 있다"고 한다. 무엇을 기다리고 있나요? 큰 값 타입을 사용하세요.
|
이전의:응, 응, 응다음:EF(람다 표현식) 쿼리: 데이터에서 만나는 여러 예외
|