- I have a
first
column typed asvarchar(190)
that is usingutf8mb4_bin
collation.
When I perform the following query I only get back all of Joe as expected:
SELECT first, last FROM person WHERE first = 'Joe'
What I would like to get is Joe, joe, jOe, joE, jOE, JoE, JOE, and JOe. Basically a case-insensitive search on a case-sensitive field.
How do I do this?
CREATE TABLE `person` (
`id` int NOT NULL AUTO_INCREMENT,
`first` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`middle` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`last` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_bin DEFAULT NULL,
`job` varchar(190) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_UNIQUE` (`id`),
UNIQUE KEY `names_unq` (`first`,`middle`,`last`,`job`),
KEY `index_job` (`job`),
KEY `index_first` (`first`,`job`),
KEY `index_first_last` (`first`,`last`,`job`),
KEY `index_middle` (`middle`,`job`),
KEY `index_last` (`job`,`last`)
) ENGINE=InnoDB AUTO_INCREMENT=99750823 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;