복붙노트

[SQL] SQL 독특한 VARCHAR 대소 문자 구분 질문

SQL

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'")와 함께 실패합니다.

어떻게 대소 문자를 구별 할 WORD에 UNIQUE 제약을받을 수 있나요?

해결법

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

    1.MySQL은 같은 외모는 기본적으로 케이스를 구분하지 않습니다 :

    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)
    );
    
  2. ==============================

    2.기본적으로 MySQL은 VARCHAR의 경우 차이 및 후행 공백을 무시합니다.

    기본적으로 MySQL은 VARCHAR의 경우 차이 및 후행 공백을 무시합니다.

    당신이 대소 문자를 구분해야하는 경우, 당신은 VARCHAR (...) 바이너리로 테이블을 변경할 수 있습니다.

    사용은 더 나은 MySQL이 전체 표기법으로 변환하는 방법을 이해에 테이블을 생성 보여줍니다.

    당신이로 후행 공백에주의를 지불해야하는 경우뿐만 아니라 대소 문자를 구분, varbinary를 사용하는 대신 VARCHAR합니다.

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

    3.나는 나의 고유 키 VARCHAR (1000)했다. 그것은했다.

    나는 나의 고유 키 VARCHAR (1000)했다. 그것은했다.

    약간의 시행 착오 후, 나는보다 아무것도 더 큰 발견이나 실패 1100 VARCHAR 같음.

    I 1099에 1001 사이에 시도하지 않았다 명확합니다.

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

  4. from https://stackoverflow.com/questions/6448825/sql-unique-varchar-case-sensitivity-question by cc-by-sa and MIT license