sql >> データベース >  >> RDS >> Mysql

mysqlテーブルの列で大文字と小文字を区別しないようにすることはできますか?

    デフォルトでは、MySQLは大文字と小文字を区別しません。

    CREATE TABLE test
    (
        name VARCHAR(20),
        UNIQUE(name)
    );
    
    mysql>     INSERT INTO test VALUES('California');
    Query OK, 1 row affected (0.00 sec)
    
    mysql>     INSERT INTO test VALUES('california');
    ERROR 1062 (23000): Duplicate entry 'california' for key 'name'
    
    mysql>     INSERT INTO test VALUES('cAlifornia');
    ERROR 1062 (23000): Duplicate entry 'cAlifornia' for key 'name'
    
    mysql>     INSERT INTO test VALUES('cALifornia');
    ERROR 1062 (23000): Duplicate entry 'cALifornia' for key 'name'
    
    mysql> SELECT * FROM test;
    +------------+
    | name       |
    +------------+
    | California |
    +------------+
    1 row in set (0.00 sec)
    

    BINARYを使用する 大文字と小文字を区別する必要がある場合

    MySQLで大文字と小文字を区別するには、BINARY キーワードは次のように使用されます

    mysql>     CREATE TABLE test
        ->     (
        ->         name varchar(20) BINARY,
        ->         UNIQUE(name)
        ->     );
    Query OK, 0 rows affected (0.00 sec)
    
    mysql>
    mysql>     INSERT INTO test VALUES('California');
    Query OK, 1 row affected (0.00 sec)
    
    mysql>
    mysql>     INSERT INTO test VALUES('california');
    Query OK, 1 row affected (0.00 sec)
    
    mysql>     INSERT INTO test VALUES('cAlifornia');
    Query OK, 1 row affected (0.00 sec)
    
    mysql>     INSERT INTO test VALUES('cALifornia');
    Query OK, 1 row affected (0.00 sec)
    
    mysql>
    mysql>     SELECT * FROM test;
    +------------+
    | name       |
    +------------+
    | California |
    | cALifornia |
    | cAlifornia |
    | california |
    +------------+
    4 rows in set (0.00 sec)
    


    1. 類似の結果を見つけて類似度で並べ替える方法は?

    2. MySQLiがステートメントの準備に失敗する

    3. MySQLの`FORCEINDEX`のユースケース?

    4. MySQL接続が機能しない