Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Thu 16 March 2023 15:43

Kiecane
Participant actif
Date d'inscription: 31 Oct 2021
Messages: 91

jointure champ avec et sans accent

Bonjour,

Je souhaite réaliser une jointure sur le champ d'une table qui présente des intitulés sans accents, par exemple 'Non Renseigne' en lien avec le champ d'une autre table qui présente les mêmes différents intitulés (chacun étant cette fois-ci associé à une clé primaire car cette table est de type "dictionnaire"), mais avec accents, soit pour l'exemple donné 'Non Renseigné'.

Voici la forme de ma jointure initiale :
SELECT *
FROM mon_schema.table_jointure
INNER JOIN mon_schema.table_dic_jointe
ON table_jointure.champ_sans_accent = table_jointe.champ_avec_accent

J'ai tenté de résoudre le problème que je rencontre actuellement de différentes manières, mais je n'ai pour l'instant pas réussi à en trouver une qui me convienne. J'ai notamment écrit un script de la forme suivante :
SELECT *
FROM mon_schema.table_jointure
INNER JOIN mon_schema.table_dic_jointe
ON REPLACE(table_jointure.champ_sans_accent,'e','é') = table_jointe.champ_avec_accent

Cependant, le script juste ci-dessus ne me permet pas d'obtenir le résultat souhaité car il me renvoie uniquement les lignes qui présentent les problèmes d'accent (par exemple Non Renseigné et Départementale) mais pas celles associées à des libellés sans accents (par exemple celles avec l'intitulé Parking n'apparaissent pas dans la sélection).



Pourriez-vous m'indiquer comment procéder s'il-vous-plaît ?



N'hésitez pas à m'indiquer si vous avez besoin de plus de renseignements.

Hors ligne

 

#2 Thu 16 March 2023 16:04

Sylvain M.
Participant assidu
Lieu: Saint-Pierre-des-Nids (53)
Date d'inscription: 8 Sep 2005
Messages: 981

Re: jointure champ avec et sans accent

Il y a des propositions de fonctions ici, par exemple :

Code:

CREATE OR REPLACE FUNCTION unaccent_string(text)
RETURNS text
IMMUTABLE
STRICT
LANGUAGE SQL
AS $$
SELECT translate(
    $1,
    'âãäåāăąÁÂÃÄÅĀĂĄèééêëēĕėęěĒĔĖĘĚìíîïìĩīĭÌÍÎÏÌĨĪĬóôõöōŏőÒÓÔÕÖŌŎŐùúûüũūŭůÙÚÛÜŨŪŬŮ',
    'aaaaaaaaaaaaaaaeeeeeeeeeeeeeeeiiiiiiiiiiiiiiiiooooooooooooooouuuuuuuuuuuuuuuu'
);
$$;

Du coup, ça donnerait une jointure comme ça :

Code:

FROM t1 JOIN t2 ON unaccent_string(t1.champ1) = unaccent_string(t2.champ2)

Dernière modification par Sylvain M. (Thu 16 March 2023 16:05)


Sylvain M.

Hors ligne

 

#3 Thu 16 March 2023 20:07

Nicolas Ribot
Membre
Lieu: Toulouse
Date d'inscription: 9 Sep 2005
Messages: 1536

Re: jointure champ avec et sans accent

Bonsoir

unaccent est une extension de postgresql aussi: https://www.postgresql.org/docs/current/unaccent.html

Nicolas

Hors ligne

 

#4 Fri 17 March 2023 11:11

Kiecane
Participant actif
Date d'inscription: 31 Oct 2021
Messages: 91

Re: jointure champ avec et sans accent

Bonjour,

Je vous remercie pour votre aide, j'ai utilisé la fonction proposée par Sylvain M. qui fonctionne très bien.

Hors ligne

 

Pied de page des forums

Powered by FluxBB