varchar 대신 varchar가 아닌 varvinary인 이유
이 표를 한 번 살펴보시기 바랍니다.
http://www.mediawiki.org/wiki/Manual:Logging_table
위키백과에서는 varchar 대신 varchar를 사용합니다.
| log_type | **varbinary**(32) | NO | MUL | |
| log_action | **varbinary**(32) | NO | | |
| log_timestamp | **binary**(14) | NO | MUL | 19700101000000 |
| log_user | int(10) unsigned | NO | MUL | 0 |
| log_user_text | **varbinary**(255) | | | |
이 모든 정보는 텍스트인데 왜 이진 파일로 저장하는 것일까요?
그들은 모든 테이블에 대해 이렇게 합니다.
2011년 초, 미디어위키는 varchar에서 varbinary로 변경되었습니다.
바르샤르와의 전쟁.varchar(N) 및 varchar(N) 바이너리가 모두 varbinary(N)로 변경되었습니다. varchar는 특정 구성을 사용하는 MySQL 데이터베이스에서 문제("콜렉션의 잘못된 혼합" 오류)를 발생시킵니다.
MSSQL에서:
제 생각에 큰 차이는 오직 두 사람 사이에 있는 것 같습니다.nvarchar
그리고.varbinary
.
왜냐면nvarchar
는 각 문자에 대해 1바이트가 아니라 2바이트를 저장합니다.
varchar
와 같은 일을 합니다.varbinary
: MSDN에서:
스토리지 크기는 입력한 데이터의 실제 길이 + 2바이트"입니다.
여기서 차이는 variabinary에 의한 것입니다. 입력한 데이터의 길이는 0바이트가 될 수 있습니다.
다음은 작은 예입니다.
CREATE TABLE Test (textData varchar(255), binaryData varbinary(255))
INSERT INTO Test
VALUES('This is an example.', CONVERT(varbinary(255),'This is an example.',0))
INSERT INTO Test
VALUES('ÜŰÚÁÉÍä', CONVERT(varbinary(255),'ÜŰÚÁÉÍä',0))
여기서 사용할 수 있는 것은 DATALENGTH 기능입니다.
SELECT datalength(TextData), datalength(binaryData) FROM test
결과는 19 - 19, 7 - 7 입니다.
따라서 크기는 같지만 다른 점이 있습니다.열 규격을 확인해 보면, varbinary(물론)에는 대조 및 문자 집합이 없으므로 다른 유형의 인코딩 및 문자 집합의 값을 쉽게 사용할 수 있습니다.
SELECT
*
FROM
INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'Test'
ORDER BY
ORDINAL_POSITION ASC;
언급URL : https://stackoverflow.com/questions/13393718/why-varbinary-instead-of-varchar
'programing' 카테고리의 다른 글
제한된 URI에 대한 액세스 거부 코드: 1012 (0) | 2023.10.11 |
---|---|
Angularjs를 사용하여 선택 드롭다운에서 기본값 설정 (0) | 2023.10.11 |
객실 유지 라이브러리.모두삭제 (0) | 2023.10.11 |
Oracle에서 ID 열을 재설정하는 방법 (0) | 2023.10.11 |
동일한 테이블의 열에 외래 키 제약 조건 적용 (0) | 2023.10.11 |