Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[SQLite] Capitalisation sur trois champs

5 réponses
Avatar
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

5 réponses

Avatar
Miko
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
Avatar
unbewusst.sein
Miko wrote:

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
Avatar
Patrick Mevzek
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
<http://www.dotandco.net/> <http://www.dotandco.com/>
Dépêches sur le nommage <news://news.dotandco.net/dotandco.info.news>
Avatar
Patrick Texier
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.
Avatar
unbewusst.sein
Patrick Texier wrote:


> 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