CREATE TABLE users (id INT NOT NULL PRIMARY KEY, usrnm VARCHAR(20) COLLATE UTF8_BIN);
INSERT
INTO users
VALUES (1, 'Пользователь'); -- First letter in upper case
SELECT *
FROM users
WHERE usrnm = 'пользователь'; -- First letter in lower case, not returned
SELECT *
FROM users
WHERE usrnm COLLATE UTF8_GENERAL_CI = 'пользователь'; -- First letter in lower case, returned
あなたは、大文字と小文字を区別しない一意性を確保したい場合は、それが列UTF8_GENERAL_CI
を作り、それをUNIQUE
を宣言する方が良いでしょうことを注意:
CREATE TABLE users (id INT NOT NULL PRIMARY KEY, usrnm VARCHAR(20) COLLATE UTF8_GENERAL_CI UNIQUE);
INSERT
INTO users
VALUES (1, 'Пользователь');
INSERT
INTO users
VALUES (2, 'пользователь'); -- unique violation
SELECT *
FROM users
WHERE usrnm = 'пользователь' COLLATE UTF8_BIN;
はどうもありがとうございました - それは、チケットです。 1 Q ...カラムをutf8_general_ciに変換すると、ログインを許可するクエリの大文字小文字の区別が破棄されませんか? –
@Ian:おそらくそれは(単に 'usrnm = 'value''でログインをチェックすると)そうです。 – Quassnoi