J'ai une table avec un dictionnaire de mots dans ma langue (letton).Comment interroger MySQL pour la longueur exacte et les caractères UTF-8 exacts
CREATE TABLE words (
value varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
Et disons qu'il a 3 mots à l'intérieur:
INSERT INTO words (value) VALUES ('tēja');
INSERT INTO words (value) VALUES ('vējš');
INSERT INTO words (value) VALUES ('feja');
Ce que je veux faire est que je veux trouver tous les mots qui est exactement 4 caractères et où la deuxième le caractère est 'ē' et le troisième caractère est 'j'
Pour moi, il semble que la requête correcte serait:
SELECT * FROM words WHERE value LIKE '_ēj_';
Mais le problème avec cette requête est qu'elle ne renvoie pas 2 entrées ('tēja', 'vējš') mais les trois. Si je comprends bien c'est parce que MySQL interne convertit les chaînes à une représentation ASCII?
Ensuite, il y a BINARY
plus possible pour LIKE
SELECT * FROM words WHERE value LIKE BINARY '_ēj_';
Mais cela ne revient pas aussi 2 entrées ('Teja', 'Vejs') mais une seule ('Teja'). Je crois que cela a quelque chose à voir avec UTF-8 2 octets pour les caractères non ASCII?
Alors question:
Quelle requête MySQL retournerait exactement mes deux mots ('tēja', 'vējš')?
Merci d'avance
Merci, je l'ai fait exactement comme vous l'avez dit - changé de table à: CHARACTER SET utf8 COLLATE utf8_bin.Je m'attends à utiliser également des symboles cyriliques, donc je m'en tiendrai à l'UTF-8 – oskarae