Version 5 (modified by celine, 15 years ago) (diff) |
---|
back to first page ..
back to CookBook Eda
back to Obstacle pressure
Problèmes recensés dans la table geobs2010.franchissabilite_piscicole
Colonne fra_note
- Toutes les valeurs ne sont pas des numériques
- Certaines valeurs sont négatives
- Caractères spéciaux : ?
- Toutes les cellules ne sont pas remplies
- Certaines cellules contiennent une valeur numérique mais avec d'autre caractères avant ou après (espace, .)
- Un intervalle de note peut-être donné : 0 à 4, 0 ou 4 (avec une observation), 5/10, 1 voire 2
- Des observations sont données mais pas de notes associées
- Certaines valeurs comportent des , au lieu d'un . --> remplacer les , par des points
--> ?, cellule vide à remplacer par : NULL, NA ?
Création d'une fonction permettant de récupérer les données qui sont des valeurs numériques positives
http://en.wikipedia.org/wiki/Regular_expression
CREATE FUNCTION isnumeric(text) RETURNS boolean AS ' SELECT $1 ~ ''^[0-9]+$'' ' LANGUAGE 'sql';
Création d'une fonction permettant de récupérer les données numériques (valeurs positives et négatives)
CREATE FUNCTION isnumeric(text) RETURNS boolean AS ' SELECT $1 ~ ''^(-)?[0-9]+$'' ' LANGUAGE 'sql';
select isnumeric(fra_note) as notenum, fra_note from geobs2010.franchissabilite_piscicole where isnumeric(fra_note)='f' order by fra_note;
834 lignes qui ne comportent pas de notes ou dont les notes posent problème
Substring permet sélectionner le(les) nième caractères
-- selection du premier character dans la colonne fra_note pour avoir le premier chiffre car des commentaires sont ajoutés après les notes
select fra_note, substring(fra_note from 1 for 1) as note from geobs2010.franchissabilite_piscicole;
Replace permet de remplacer un caractère ou chaine de caractère par autre chose
select fra_note, replace(fra_note,'?','NULL') as note from geobs2010.franchissabilite_piscicole order by fra_note;
Récupérer toutes les donnés avec des nombres décimaux
NB : la fonction ne fonctionne plus si on lui donne cette expression !'(-)?[0-9]*
.?[0-9]+$'
select fra_note from geobs2010.franchissabilite_piscicole where fra_note !~'(-)?[0-9]*
.?[0-9]+$' order by fra_note;