J'ai cherché et je n'ai pas trouvé quelque chose pour résoudre ce problème. Je veux mettre à jour le tableau suivant:
+--------------------+ | description | +--------------------+ | Interna_172_16_0 | | Interna_172_16_1 | | Interna_172_16_2 | | Interna_172_16_3 | | Interna_172_16_4 | +--------------------+
Avec la même chaîne, mais en soustrayant un du dernier numéro fe:
+--------------------+ | description | +--------------------+ | Interna_172_16_1 | | Interna_172_16_2 | | Interna_172_16_3 | | Interna_172_16_4 | | Interna_172_16_5 | +--------------------+
Comment peut J'accomplis cela? désolé pour le mauvais anglais, merci !!
3 Réponses :
Vous pouvez utiliser:
update yourtable set description = concat(left(description, length(description)-1), right(description,1)-1) where right(description,1) regexp '[1-9]+'
Si vous avez besoin d'une instruction select:
| description | | ---------------- | | Interna_172_16_0 | | Interna_172_16_1 | | Interna_172_16_2 | | Interna_172_16_3 | | Interna_172_16_4 |
Voir le démo .
Si vous souhaitez mettre à jour le tableau:
update tablename set description = concat( left(description, length(description) - length(substring_index(description, '_', -1))), substring_index(description, '_', -1) - 1 );
Voir le démo .
Résultats:
select concat( left(description, length(description) - length(substring_index(description, '_', -1))), substring_index(description, '_', -1) - 1 ) description from tablename
Ce code suppose que toutes les descriptions se terminent par une chaîne numérique.
Vous pouvez le faire. Le nom de la table doit être adapté
UPDATE Table1 SET description = CONCAT(SUBSTRING_INDEX(`description`, '_', 3) ,'_',SUBSTRING_INDEX(`description`, '_', -1) -1);