Regex qui se termine par *

WRInaute passionné
Bonjour,

j'aimerais faire une requête mysql qui supprime l'étoile de tous mes noms se terminant par une seule *.

Ex :
DUPOND* -> DUPOND
DUPOND * -> DUPOND
DU*POND* -> DU*POND

Mais
DUPOND** -> DUPOND**


Je sais pas trop comment écrire ça en Php/MySql

Merci
 
WRInaute impliqué
Salut,
Un parcours comme :
Code:
$sql = mysql_query("select * from nom_table where Nom like '%*' and Nom not like '%**'");
while($tab=mysql_fetch_array($sql)){
$id=$tab["id"];
$nom=$tab["nom"];
$n_nom = substr($nom,0,strlen($nom)-1);
$sql2 = mysql_query("update nom_table set Nom='".$n_nom ."' where id='".$id ."'");
}
?
J'ignore s'il existe la possibilité de tout faire en une requête SQL, avec une sorte de substr Mysql (update nom_table set Nom=substr(nom,0,longueur-1) where Nom like...
Si quelqu'un a plus simple je serai également curieux de savoir ^^
 
WRInaute occasionnel
Pfiou juste avec une seule requete SQL ca risque d'etre tendu, et puis si c'est faisable (ce que je ne doute pas) ca risque d'etre lourd.

A mon avis il vaut mieux que tu fasse une requete général puis que tu fasses une boucle comme l'a expliqué Schwarzer Stern. Ca en sera d'autant plus facile a trier les résultats
 
WRInaute accro
Euh...

UPDATE table SET champ=substr(champ,1,length(champ)-1) where champ like '%*' and champ not like '%**'

C'est quoi le truc compliqué ou lourd?

Jacques.

PS: le mysql_query avec les valeurs concaténées sans escape, c'est quand même super dangereux.
 
Discussions similaires
Haut