[SQLite] Capitalisation sur trois champs

Le
unbewusst.sein
J'ai une base SQLite dont je dois transformer 3 champs :

lastname TEXT
firstname TEXT
fullLastName TEXT

j'ai, par exemple :

lastname dupond
firstname jules
fullLastName dupondjules

que je souhaite capitaliser càd :

lastname Dupond
firstname Jules
fullLastName DupondJules

comment faire ?

--
Une Bévue
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Miko
Le #21861231
Une Bévue nous demande:
J'ai une base SQLite dont je dois transformer 3 champs :
........

comment faire



Avec un langage de script (PHP, ou Tcl, mais surement bien d'autres
aussi...)

En Tcl :
#appel de l'interface Tcl/SQLite
package require sqlite3
#création de la base
sqlite3 db1 ./testdb
#on met des données dans la base
db1 eval {CREATE TABLE t1(a int, b text)}
db1 eval {INSERT INTO t1 VALUES(1,'hello')}
db1 eval {INSERT INTO t1 VALUES(2,'goodbye')}
db1 eval {INSERT INTO t1 VALUES(3,'howdy!')}
#on lit les données
set x [db1 eval {SELECT * FROM t1 ORDER BY a}]
#valeur de x:
1 hello 2 goodbye 3 howdy!
#création d'une fonction (on récupère ici une fonction Tcl existante)
db1 function totitle {string totitle}
#appel de la fonction avec update de la table
db1 eval {UPDATE t1 set b=totitle(b)}

# lecture de la table
set x [db1 eval {SELECT * FROM t1 ORDER BY a}]
#valeur de x:
1 Hello 2 Goodbye 3 Howdy!

les liens:
http://www.sqlite.org/tclsqlite.html

http://www.tcl.tk/

Tcl est un langage de script facile à apprendre et portable (*nix, windows,
mac os, vms....)
Il s'interface avec la plupart des bases de données, PostgreSQL l'intègre en
standard comme langage procédural.


Miko
unbewusst.sein
Le #21861221
Miko
Avec un langage de script (PHP, ou Tcl, mais surement bien d'autres
aussi...)

En Tcl :



[...]

Tcl est un langage de script facile à apprendre et portable (*nix, windows,
mac os, vms....)
Il s'interface avec la plupart des bases de données, PostgreSQL l'intègre en
standard comme langage procédural.



OK, merci beaucoup, je vais pouvoir me dépatouiller avec vos tuyaux )))
--
Une Bévue
Patrick Mevzek
Le #21861201
Le Thu, 11 Oct 2007 20:56:20 +0200, Une Bévue a écrit:

que je souhaite capitaliser càd :

lastname Dupond
firstname Jules
fullLastName DupondJules



Si vous avez INITCAP (ex: PostgreSQL) ca va vite :
UPDATE whatever SET lastname=INITCAP(lastname),firstname=INITCAP(firstname);
UPDATE whatever SET fullLastName=lastname || firstname;
(peut-être faisable en une passe, à vérifier, mais d'un autre côté,
fullLastName ne sert vraiment à rien comme champ s'il est construit ainsi,
si vous en avez vraiment besoin, faites une vue)

Sinon, quelque chose comme :
UPDATE whatever SET lastname=UPPER(SUBSTRING(lastname FROM 1 FOR 1)) ||
SUBSTRING(lastname FROM 2)
idem pour firstname
et puis après fullLastName comme au-dessus.


Attention cependant selon le jeu de caractères de vos données, cela peut
se passer plus ou moins bien (l'opération « mise en majuscules » ou « mise
en minuscules » n'est pas trivial à partir du moment où l'on désire tenir
compte correctement du multilinguisme)

--
Patrick Mevzek . . . . . . . . . . . . . . Dot and Co
Dépêches sur le nommage
Patrick Texier
Le #21861191
Le 12 Oct 2007 01:12:58 GMT, Patrick Mevzek a écrit :

Attention cependant selon le jeu de caractères de vos données, cela peut
se passer plus ou moins bien (l'opération « mise en majuscules » ou « mise
en minuscules » n'est pas trivial à partir du moment où l'on désire tenir
compte correctement du multilinguisme)



Non seulement ce n'est pas trivial, mais c'est impossible. On ne peut
pas deviner si une particule s'écrit « de » ou « De » ou si un américain
s'appelle « Leroy » ou « LeRoy ». Des noms, cela se gère proprement.
unbewusst.sein
Le #21861171
Patrick Texier

> Attention cependant selon le jeu de caractères de vos données, cela peut
> se passer plus ou moins bien (l'opération « mise en majuscules » ou « mise
> en minuscules » n'est pas trivial à partir du moment où l'on désire tenir
> compte correctement du multilinguisme)

Non seulement ce n'est pas trivial, mais c'est impossible. On ne peut
pas deviner si une particule s'écrit « de » ou « De » ou si un américain
s'appelle « Leroy » ou « LeRoy ». Des noms, cela se gère proprement.



oui, finalement j'ai utilisé un algo + complexe mais que ne traite pas
le cas de Leroy...

pour l'instant, c'est french only...
--
Une Bévue
Publicité
Poster une réponse
Anonyme