Précédent   Forum des professionnels en informatique > Bases de données > Firebird
Firebird Forum d'entraide sur le SGBD Firebird. Avant de poster -> F.A.Q Firebird, Tutoriels
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/07/2007, 23h47   #1
Expert Confirmé Sénior
 
Avatar de _skip
 
Homme
Développeur d'applications
Inscription : novembre 2005
Messages : 2 324
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Suisse

Informations professionnelles :
Activité : Développeur d'applications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2005
Messages : 2 324
Points : 4 785
Points : 4 785
Par défaut [FB] Un problème de sensibilité à la casse et aux accents.

Hello,
J'envisage de migrer une application SQL server vers firebird afin de pouvoir profiter du choix entre le mode monoposte ou serveur (que je trouve super intéressant).
J'ai fait plusieurs recherches concernant mon principal problème qui vient des collations disponibles, pas de FR en case et accent insensitive pour les recherches.
Les réponses que j'ai obtenues jusqu'à maintenant ne sont pas vraiment satisfaisantes, les solutions proposées (UPPER et autres) ont la superbe particularité de faire ignorer les indexs, et étant donné que je ne compte pas travailler sur des tables de 50 enregistrements c'est un véritable problème.

J'ai vu que les Indexs sur expression (style postgresql) qui ont été introduits depuis la version 2.0 seraient peut-être un bon pas en avant. Le souci est que j'utilise un outil de mapping objet relationnel qui ne sera pas capable d'ajouter tout seul un UPPER dans les requêtes qu'il générera.

En fait j'ai remarqué que des collations CI_AI existaient pour l'espagnol et le portugais, c'est vraiment surprenant que personne n'ait jamais pensé à en créer pour d'autres langues. Ce serait vraiment ce qu'il me faudrait.

Une piste ou un conseil?
_skip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2007, 11h30   #2
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
personne n'a du le demander

ceci dit tu doit pouvoir utiliser ISO8859_1 avec ES_ES_CI_AI et obtenir ce que tu souhaites

par exemple, un SELECT monchamp from matable where monchamp COLLATE ES_ES_CI_AI LIKE '%e%'
va bien me ramener tout ce qui contient e,é,è,E
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2007, 15h16   #3
Expert Confirmé Sénior
 
Avatar de _skip
 
Homme
Développeur d'applications
Inscription : novembre 2005
Messages : 2 324
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Suisse

Informations professionnelles :
Activité : Développeur d'applications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2005
Messages : 2 324
Points : 4 785
Points : 4 785
Merci de ta réponse,

Mais j'avoue que je suis un peu timide à l'idée d'employer la collation espagnole car je sais pas quelles sont les différences avec FR_fr... Peut être je m'inquiète pour rien?

La dernière version de firebird (2.1 beta) permet de créer sa propre collation, cela résoud au moins les problème des majuscules/minuscules, restent les accents.


CREATE COLLATION FR_FR_CI
FOR ISO8859_1
FROM FR_fr
CASE INSENSITIVE


C'est le seul truc que je trouve vraiment pénible avec ce SGBD
_skip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2007, 19h14   #4
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
On a toujours pu créer ces propres collations et même jeu de caractères, c'est juste facilité avec la 2.1
avec la 2.0 c'est possible aussi un peu moins facilement (cf README.intl.txt)
avec la 1.5 c'est aussi possible, mais encore moins facilement

avec la 2.1 :

CREATE COLLATION FR_FR_CI_AI
FOR ISO8859_1
FROM FR_FR
CASE INSENSITIVE
ACCENT INSENSITIVE

fonctionne très bien
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/07/2007, 20h24   #5
Expert Confirmé Sénior
 
Avatar de _skip
 
Homme
Développeur d'applications
Inscription : novembre 2005
Messages : 2 324
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Suisse

Informations professionnelles :
Activité : Développeur d'applications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2005
Messages : 2 324
Points : 4 785
Points : 4 785
Ah tiens je n'avais pas vu qu'on pouvait préciser Accent insensitive. Cool.
Bon pour le moment j'ai modifié tout mon script pour que les varchar utilisent la collation ES_ES_CI_AI qui semble faire l'affaire, j'ai testé et ca m'a eu l'air de bien fonctionner.

En ce qui concerne la possibilité de créer des collations, oui ça existe en effet mais ça demandait d'écrire du C. Si t'arrives à me sortir comment s'y prendre pour avoir un FR_FR_CI_AI pour firebird 2.01 je suis preneur.

J'ai un énorme mal à trouver de la documentation *à jour* sur firebird en général, ça me prend un peu la tête mais d'un autre coté je le trouve tellement bien ce sgbd
_skip est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/07/2007, 08h14   #6
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
tu pourras le faire dans la 2.0.2 avec :
execute procedure sp_register_collation ('ISO8859_1', 'FR_FR_CI_AI','FR_FR',7);

et par défaut FR_FR_CI_AI sera installée dans la 2.1 à partir de la beta2
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/07/2007, 17h01   #7
Expert Confirmé

 
Homme Philippe Makowski
Consultant spécialité Firebird
Inscription : mai 2002
Messages : 2 215
Détails du profil
Informations personnelles :
Nom : Homme Philippe Makowski
Âge : 49
Localisation : France

Informations professionnelles :
Activité : Consultant spécialité Firebird
Secteur : Conseil

Informations forums :
Inscription : mai 2002
Messages : 2 215
Points : 3 318
Points : 3 318
Citation:
Envoyé par _skip
J'ai un énorme mal à trouver de la documentation *à jour* sur firebird en général, ça me prend un peu la tête mais d'un autre coté je le trouve tellement bien ce sgbd
Aujourd'hui la doc la plus à jour c'est le livre d'Helen avec l'additif disponible
et les notes de version en plus pour compléter si necessaire
http://www.ibphoenix.com/main.nfs?a=..._firebird_book
__________________
Philippe Makowski
IBPhoenix - Firebird
Membre de l'April
makowski est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/07/2007, 11h33   #8
Expert Confirmé Sénior
 
Avatar de _skip
 
Homme
Développeur d'applications
Inscription : novembre 2005
Messages : 2 324
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 28
Localisation : Suisse

Informations professionnelles :
Activité : Développeur d'applications
Secteur : High Tech - Produits et services télécom et Internet

Informations forums :
Inscription : novembre 2005
Messages : 2 324
Points : 4 785
Points : 4 785
Merci pour ton aide.
_skip est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 17h06.


 
 
 
 
Partenaires

Hébergement Web