2 votes

Comment supprimer les chiffres de la fin de la chaîne en utilisant SQL

S'il vous plaît, pouvez-vous répondre à ma question. Comment supprimer les chiffres de la fin de la chaîne en utilisant SQL ? Par exemple, la chaîne '2Ga4la2009' doit être convertie en 2Ga4la. Le problème est que nous ne pouvons pas les couper car nous ne savons pas combien de chiffres se trouvent à la fin de la chaîne. Meilleures salutations, Galina.

2voto

Ron Savage Points 7612

Cela semble fonctionner :

select left( concat('2Ga4la2009','1'), length(concat('2Ga4la2009','1')) - length(convert(convert(reverse(concat('2Ga4la2009','1')),unsigned),char)))

Le concat('mavaleur', '1') est une protection contre les nombres qui se terminent par des 0.

Le revers le renverse de sorte que le numéro se trouve à l'avant.

Le convertisseur interne transforme la chaîne inversée en un nombre, en supprimant les caractères de fin de chaîne.

La conversion externe transforme la partie numérique en caractères, ce qui permet d'obtenir la longueur.

Vous connaissez maintenant la longueur de la partie numérique, et vous pouvez déterminer le nombre de caractères de la valeur originale à couper avec la fonction "left()".

C'est laid, mais ça marche :-)

0voto

glebm Points 6620

Jetez un coup d'oeil à ça : http://www.mysqludf.org/lib_mysqludf_preg/

Et si, pour une raison quelconque, vous ne pouvez pas utiliser l'UDF et ne voulez pas le faire du côté client de la base de données, vous pouvez toujours faire ce qui suit :

  1. Trouver la position de la première lettre à partir de la fin (par exemple, le minimum des 25 LOCATE sur le verso de la chaîne)

  2. Do LEFT(@string, @string_length - @result_of_step_1)

Vous n'avez pas à effectuer de manipulation particulière dans le cas où il n'y a pas de chiffres à la fin de la chaîne, car dans ce cas, LOCATE renvoie 0.

Cheers

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X