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

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

Marsh Posté le 31-01-2001 à 10:38:03    

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

Reply

Marsh Posté le 31-01-2001 à 10:38:03   

Reply

Marsh Posté le 31-01-2001 à 10:46:03    

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 .
Reply

Marsh Posté le 31-01-2001 à 11:18:41    

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

Reply

Marsh Posté le 31-01-2001 à 11:25:52    

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 .
Reply

Marsh Posté le 31-01-2001 à 11:29:21    

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 :(

Reply

Marsh Posté le 31-01-2001 à 11:39:29    

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

Reply

Marsh Posté le 31-01-2001 à 11:45:25    

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

Reply

Marsh Posté le 31-01-2001 à 11:52:33    

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...

Reply

Marsh Posté le 31-01-2001 à 12:13:15    

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

 

--Message édité par TUTU--

Reply

Marsh Posté le 31-01-2001 à 19:17:27    

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

Reply

Marsh Posté le 31-01-2001 à 19:17:27   

Reply

Marsh Posté le 31-01-2001 à 20:25:54    

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.

Reply

Marsh Posté le 31-01-2001 à 22:06:19    

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

Reply

Marsh Posté le 31-01-2001 à 22:46:45    

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--

Reply

Marsh Posté le 01-02-2001 à 11:29:58    

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

Reply

Marsh Posté le 01-02-2001 à 11:33:37    

...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!!!

Reply

Marsh Posté le 01-02-2001 à 11:56:13    

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.

Reply

Marsh Posté le 01-02-2001 à 14:08:04    

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

Reply

Marsh Posté le 01-02-2001 à 14:36:25    

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.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed