programing

SQL 고유 varchar 대소 문자 구분 질문

goodcopy 2021. 1. 14. 23:15
반응형

SQL 고유 varchar 대소 문자 구분 질문


단어 목록으로 SQL 테이블을 채우려 고합니다. 테이블 자체는 매우 간단합니다.

CREATE TABLE WORDS(
  ID BIGINT AUTO_INCREMENT, 
  WORD VARCHAR(128) NOT NULL UNIQUE, 
  PRIMARY KEY(ID)
);

내가 겪고있는 문제는 이것이다 : 다음 삽입물을 연속적으로 할 때

INSERT INTO WORDS(WORD) VALUES('Seth');
INSERT INTO WORDS(WORD) VALUES('seth');

두 번째 삽입은 제약 조건 위반으로 실패합니다 ( " 'WORD'키에 대한 중복 항목 'seth'").

UNIQUE제약 조건 WORD이 대소 문자를 구분하도록 하려면 어떻게 해야합니까?


mysql은 기본적으로 대소 문자를 구분하지 않는 것 같습니다.

대소 문자를 구분하는 데이터 정렬 (예 : utf8_bin)을 사용하여 열을 만들어야 할 수도 있습니다.

CREATE TABLE WORDS (
    ID BIGINT AUTO_INCREMENT, 
    WORD VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL UNIQUE, 
    PRIMARY KEY(ID)
);

기본적으로 MySQL은 .NET의 대소 문자 및 후행 공백의 차이를 무시합니다 varchar.

대소 문자를 구분해야하는 경우 테이블을 varchar(...) binary.

show create tableMySQL이이를 전체 표기법으로 변환하는 방법을 더 잘 이해 하려면 사용하십시오 .

후행 공백에주의하고 대소 문자를 구분해야하는 경우 varbinary대신을 사용하십시오 varchar.


고유 키 varchar (1000)을 만들었습니다. 효과가있었습니다.

약간의 시행 착오 끝에 1100 varchar보다 크거나 같은 것이 실패한다는 것을 알았습니다.

명확히하기 위해 1001에서 1099 사이에 시도하지 않았습니다.

도움이 되었기를 바랍니다.

참조 URL : https://stackoverflow.com/questions/6448825/sql-unique-varchar-case-sensitivity-question

반응형

'programing' 카테고리의 다른 글

Html.EditorFor additionalViewData  (0) 2021.01.14
VARCHAR2 (10 CHAR)와 NVARCHAR2 (10)의 차이점  (0) 2021.01.14
XML의 따옴표.  (0) 2021.01.14
Android AudioRecord 예  (0) 2021.01.14
vim 백 스페이스가 ^?  (0) 2021.01.14