web-dev-qa-db-fra.com

Supprimer les deux derniers caractères d'une colonne dans MySQL

J'ai une colonne SQL où les entrées sont des chaînes. Je dois afficher ces entrées après avoir coupé les deux derniers caractères, par exemple. si l'entrée est 199902345 il devrait sortir 1999023.

J'ai essayé de regarder dans TRIM, mais on dirait qu'il propose de couper uniquement si nous savons quels sont les deux derniers caractères. Mais dans mon cas, je ne sais pas ce que sont ces deux derniers chiffres et il suffit de les jeter.

En bref, quelle opération de chaîne MySQL permet de supprimer les deux derniers caractères d’une chaîne?

Je dois ajouter que la longueur de la chaîne n'est pas fixée. Il pourrait s'agir de 9 caractères, 11 caractères ou plus.

63
Lucky Murari

Pour sélectionner tous les caractères sauf le dernier n d'une chaîne (ou, en d'autres termes, supprimer le dernier n caractères d'une chaîne); utilisez les SUBSTRING et CHAR_LENGTH fonctionne ensemble:

SELECT col
     , /* ANSI Syntax  */ SUBSTRING(col FROM 1 FOR CHAR_LENGTH(col) - 2) AS col_trimmed
     , /* MySQL Syntax */ SUBSTRING(col,     1,    CHAR_LENGTH(col) - 2) AS col_trimmed
FROM tbl

Pour supprimer une sous-chaîne spécifique de la fin de chaîne, utilisez la fonction TRIM :

SELECT col
     , TRIM(TRAILING '.php' FROM col)
-- index.php becomes index
-- index.txt remains index.txt
104
Salman A

Pourquoi ne pas utiliser la fonction LEFT (chaîne, longueur) au lieu de la sous-chaîne.

LEFT(col,length(col)-2) 

vous pouvez visiter ici https://dev.mysql.com/doc/refman/5.7/fr/string-functions.html#function_left pour en savoir plus sur Mysql String Functions.

54
Larz
4

Vous pouvez utiliser une LENGTH(that_string) moins le number of characters Que vous souhaitez supprimer dans la fonction SUBSTRING(), ou utilisez la fonction TRIM().

0
Richard