Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

ทำให้คอลัมน์ Case-sensitive สำหรับ UNIQUE แต Case-insensitive สำหรับ SEARCH ใน MySQL

ทำได้ 2 วิธี:

  • ชนิดข้อมูล VARBINARY
  • Collation _bin

VARBINARY data type

สร้างตาราง:

mysql> create table SearchingDemo2 ( UserId VARBINARY(128) NOT NULL, UNIQUE KEY index_on_UserId2(UserId) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Query OK, 0 rows affected, 1 warning (0.99 sec)

UserId เป็น VARBINARY(128) มี index unique

_bin collation

สร้างตารางใหม่:

mysql> create table SearchingDemo ( UserId varchar(128) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, UNIQUE KEY index_on_UserId(UserId) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci; Query OK, 0 rows affected, 2 warnings (0.88 sec)

UserId เป็น varchar(128) COLLATE utf8_bin มี index unique

ทั้งสองวิธีทำให้ uniqueness เป็น case-sensitive แต่ search เป็น case-insensitive (ขึ้นอยู่กับ collation ของ database/connection)