Voici une requête bien innoncente :
SELECT champ FROM table WHERE champ LIKE '%e%'
Sur Mysql, la recherche se fait en "typographie pauvre". C'est-à-dire que
tous les champs contenant un "e" mais aussi "é" "É" "è" ... sortent de
la recherche.
Sur Oracle, la recherche est stricte. On peut améliorer :
SELECT champ FROM table WHERE UPPER(champ) LIKE '%E%'
Les majuscules et les minuscules sont maintenant confondues mais pas les
variantes des lettres. "e" n'est pas confondu avec "é", "è", etc.
Existe-t-il un moyen de dire à Oracle de "faire-comme-mysql" ?
Les données en question portent sur des données encodées en utf8
contenant de l'européen, du cyrillique et du grec entre autre choses.
J'ai bien entendu parlé d'Oracle TEXT ou de TRANSLATE, mais j'avoue que
tout cela me laisse froid et perplexe.
Le problème me semblant s'imposer à toute base de données multilingue,
quelles sont les solutions habituelles ?
En bonus, si quelqu'un sait comment obliger Mysql à faire de la recherche
stricte ; en effet, même son "=" confond minuscules et majuscules.
a++
--
Christophe HENRY
forumslkm.sbgodin@nerim.net (sans lkm)
GnuPG : 3922239E60036EC86BF7268A877C52AC 4883C02A
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
pgulutzan
Christophe HENRY wrote: ...
En bonus, si quelqu'un sait comment obliger Mysql à faire de la recherc he stricte ; en effet, même son "=" confond minuscules et majuscules.
J'ai une colonne qui contient 'e', 'E', et 'ê'. J'utilise le 'mysql' client avec MySQL Version 5.1. Seulement pour cet exemple, j'utilise latin1, mais UTF8 marche bien aussi.
mysql> select count(*) from tc where s1 = 'e'; +----------+ | count(*) | +----------+ | 3 | +----------+ 1 row in set (0.00 sec)
mysql> select count(*) from tc where s1 collate latin1_general_ci = 'e'; +----------+ | count(*) | +----------+ | 2 | +----------+ 1 row in set (0.00 sec)
mysql> select count(*) from tc where cast(s1 as binary(1)) = 'e'; +----------+ | count(*) | +----------+ | 1 | +----------+ 1 row in set (0.01 sec)
Peter Gulutzan MySQL AB
Christophe HENRY wrote:
...
En bonus, si quelqu'un sait comment obliger Mysql à faire de la recherc he
stricte ; en effet, même son "=" confond minuscules et majuscules.
J'ai une colonne qui contient 'e', 'E', et 'ê'. J'utilise le 'mysql'
client avec
MySQL Version 5.1. Seulement pour cet exemple, j'utilise latin1, mais
UTF8 marche bien aussi.
En bonus, si quelqu'un sait comment obliger Mysql à faire de la recherc he stricte ; en effet, même son "=" confond minuscules et majuscules.
J'ai une colonne qui contient 'e', 'E', et 'ê'. J'utilise le 'mysql' client avec MySQL Version 5.1. Seulement pour cet exemple, j'utilise latin1, mais UTF8 marche bien aussi.