Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1534 connectés 

  FORUM HardWare.fr
  Programmation

  SQL :UPDATE pose Big problem ! enfin, pour moi :)

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

SQL :UPDATE pose Big problem ! enfin, pour moi :)

n°12099
fabd
Posté le 31-01-2001 à 10:38:03  profilanswer
 

Voila, j'ai un champs qui contient une URL de type (il y a 600 lignes differentes) :
 
http://images.dvdexpress.com/image/film.jpg
 
Le probleme, c que je veux remplacer le "images" par "www" sans avoir a me taper tts les lignes a la main.
 
Auriez vous une solution pour faire un UPDATE d'une partie du champs pour conserver le reste ?
 
Merci

mood
Publicité
Posté le 31-01-2001 à 10:38:03  profilanswer
 

n°12102
Lord II
PIB2000
Posté le 31-01-2001 à 10:46:03  profilanswer
 

Sous MsSql
update table set URL=replace(URL,'//images','//www';) WHERE URL like 'http://images%'
 
si je me rappelle bien la syntaxe de replace


---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°12109
fabd
Posté le 31-01-2001 à 11:18:41  profilanswer
 

Je te fais confiance, sinon je pete toute ma base :D

n°12110
Lord II
PIB2000
Posté le 31-01-2001 à 11:25:52  profilanswer
 

Commence par un select pour voir si la syntaxe du where remonte bien les bonnes infos.
 
De toute facons sous MSSQL, il y a un journal ce qui te permet de revenir en arrière si tu fais une grosse boulette mais je ne sai spas trop comment ca marche !!


---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°12112
fabd
Posté le 31-01-2001 à 11:29:21  profilanswer
 

Le probleme c ke je suis sur une base access, et ke je ne suis pas ché moi et ke je ne travail pas en local :(

n°12115
Fred999
Rabat-joie
Posté le 31-01-2001 à 11:39:29  profilanswer
 

Alors fais un test sur une petite table de travail...
 
Désolé sinon Access je ne connais pas. C'est uns syntaxe type TransactSQL?

n°12116
fabd
Posté le 31-01-2001 à 11:45:25  profilanswer
 

Je viens de tester, et ca marche pas
 
Il ne reconnait pas la syntaxe "replace" dans l'update !

n°12117
Fred999
Rabat-joie
Posté le 31-01-2001 à 11:52:33  profilanswer
 

Bon, alors il te faut utiliser l'équivalent Access de Substring(expresssion, start, length) qui te sort un extrait d'une chaîne de caractères et Length(expression) qui te donne la longueur d'une chaîne de caractères.
 
Donc :
 
update table
set monchamp = substring (monchamp, 1, 6) + "www" + substring (monchamp, 10, Length(monchamp))
 
 
Voila...

n°12119
TUTU
Posté le 31-01-2001 à 12:13:15  profilanswer
 

voici la fonction access :
 
Mid([TEST],1,7) & "www" & Mid([TEST],14,Len([TEST]))

 

--Message édité par TUTU--

n°12224
fabd
Posté le 31-01-2001 à 19:17:27  profilanswer
 

g rien compris :D
 
G bo avoir essayé Altavista traductor, mais ca marche pas :lol:

mood
Publicité
Posté le 31-01-2001 à 19:17:27  profilanswer
 

n°12234
Fred999
Rabat-joie
Posté le 31-01-2001 à 20:25:54  profilanswer
 

TUTU t'a donné (presque) (je pense) la bonne réponse.
 
Bon, comme tu dis n'avoir rien compris, je vais tout décrire, désolé si tu n'es pas débutant :
 
1. Mid (chaîne, début, longueur) est la fonction d'extraction d'une sous-chaîne.
 
Exemple : Mid ("Ca tue sa mère sur HFR", 4, 11) = "tue sa mère"ss
 
On prend les 11 caractères en partant du 4e caractère de la chaîne (espaces inclus).
 
2. & est l'opérateur de concaténation de chaînes de caractères : on les colles les unes aux autres.
 
Exemple : "Ca tue sa mère" & " sur HFR" = "Ca tue sa mère sur HFR"
 
3. Len(chaîne) est une fonction qui retourne la longueur d'une chaîne de caractères.
 
Exemple : Len("Ca tue sa mère sur HFR" ) = 22
 
 
ET DONC :ss
 
L'opération que propose TUTU est de prendre le début de l'URL ("http://" ), et de la concaténer avec "www" puis la fin de l'URL (pour l'exemple que tu donnes dans ton premier post, ".dvdexpress.com/image/film.jpg".
 
Finalement, tu auras une syntaxe du style :ss
 
UPDATE matable
SET monchamp = Mid(monchamp1,7) & "www" & Mid(monchamp,14,Len(monchamp) - 13)
 
Et voilà, c'est tout.

n°12260
fabd
Posté le 31-01-2001 à 22:06:19  profilanswer
 

Je dois etre encore plus con ke le débutantss:rolleyes:ss
 
Je tape ce ke tu m'a dit, et je teste sur l'id 251, ca donne donc :
UPDATE films SET films.[image] = Mid(image1,7) & "www" & Mid(mail,14,Len(mail)-13)
WHERE films.id=251
 
OK ?ss
 
Ben, ce con m'affiche une boite de dialogue ou je dois taper quelquechose (je c pas koi) image1 et apres mail ? :confused:
 
L'update se fait bien, et le resultat n'est pas bo a voir : au lieu d'avoir ce ke je voudrais, j'ai www , vi vi , juste ca :D

n°12264
TUTU
Posté le 31-01-2001 à 22:46:45  profilanswer
 

Fred999 pourquoi -13 après la longeur de chaine ?
Dans la fonction d'extraction mid ( nom du champ, debut de la chaine, fin de la chaine ) si tu donne le bon début je pense qu'il y pas besoin de faire le -13
fabd
avant de faire des updates, essayes de faire 1 requete de selection avec le champ calculé qui va constituer des updates cela évite les problèmes.
Si ta requête est :
 
UPDATE films SET films.[image] = Mid(image1,7) & "www" & Mid   (mail,14,Len(mail)-13) WHERE films.id=251  
le champ image de la fonction mid doit être en crochet
Mail C'est quoi ?
 
Je pense que la requête doit s'écrire :
 
UPDATE films SET films.[image] = Mid([image],1 ,7) & "www" & Mid ([image] ,14,Len([image])) WHERE films.id=251  
Dans le pire des cas, si les fonctions access ne suffisent tu peux ecrire tes propres fonctions dans la partie module, et les inserer dans tes requetes.

 

--Message édité par TUTU--

n°12296
fabd
Posté le 01-02-2001 à 11:29:58  profilanswer
 

La bonne réponse était :
 
"UPDATE films SET image = 'http://www.'+mid(image,15) WHERE left(image,14)='http://images.'"
 
:D

n°12298
Fred999
Rabat-joie
Posté le 01-02-2001 à 11:33:37  profilanswer
 

...OK. Le souci c'est que je n'avais plus la syntaxe VB en tête...
 
Enfin tu vois, tu as fini par trouver seul!!!

n°12305
TUTU
Posté le 01-02-2001 à 11:56:13  profilanswer
 

Salut fabd
la syntaxe de ton update est beaucoup plus simple. C'est génial.
Mais la réponse, que je t'avais donnée, fonctionne aussi. J'ai testé les 2 avec 1 requête de sélection et comme donnéesss
'http://images.dvdexpress.com/image/film.jpg' dans une table de test.

n°12317
fabd
Posté le 01-02-2001 à 14:08:04  profilanswer
 

Oauis, ben, g bien teste ta soluce, mais ca plante :(
enfin, le principal c ke ca marche :D

n°12326
TUTU
Posté le 01-02-2001 à 14:36:25  profilanswer
 

Fabd, ben pourquoi ? message d'erreur ? Mauvais résultat ? Syntaxe ?
Moi sous access 97, avec l'exemple que tu as donné, dans une table de test + une requete update , j'ai pas de problème. Comme tu l'as dit l'essentiel c'est que ca fonctionne.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  SQL :UPDATE pose Big problem ! enfin, pour moi :)

 

Sujets relatifs
[SQL 7] les vues et leur stockage[SQL 7]
SQL ??? une ressource concrete ???Recherche developpeur Perl/php/javascript/HTML/SQL
[php] problem avec -> requires('fichier.inc');ISQL ???? du SQL ou koi ???
Recordset sur ASP et UpdateDes pros SQL server 7?
[C++ / SQL / SQL Server 7] j'ai un message obscur 
Plus de sujets relatifs à : SQL :UPDATE pose Big problem ! enfin, pour moi :)


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR