web-dev-qa-db-fra.com

Obtention des 5 derniers caractères de la chaîne avec la requête mysql

Je dois obtenir les 5 derniers numéros en utilisant mysql.

Mes valeurs sont comme YOT-A78514, LOP-C4521 ...

Je dois obtenir seulement cinq derniers caractères. Comment puis-je faire cela dans la requête?

39
user1253602

Vous pouvez le faire avec la fonction RIGHT (str, len) . Renvoie les caractères len les plus à droite de la chaîne str,

Comme ci-dessous:

SELECT RIGHT(columnname,5) as yourvalue FROM tablename
95
user319198

La fonction "correcte" est la voie à suivre, l'utilisation de la sous-chaîne peut entraîner un problème qui n'est pas si facile à remarquer:

mysql> select right('hello', 6);
+-------------------+
| right('hello', 6) |
+-------------------+
| hello             |
+-------------------+
1 row in set (0.00 sec)

mysql> select substring('hello', -6);
+------------------------+
| substring('hello', -6) |
+------------------------+
|                        |
+------------------------+
1 row in set (0.00 sec)

Mais si vous n'essayez pas de dépasser le début de la chaîne, la sous-chaîne fonctionne bien sûr bien:

mysql> select substring('hello', -5);
+------------------------+
| substring('hello', -5) |
+------------------------+
| hello                  |
+------------------------+
1 row in set (0.00 sec)
14
Juha Palomäki

Right est un bon choix mais vous pouvez également utiliser substring comme ceci-

SELECT Substring(columnname,-5) as value FROM table_name
6
Ankit Sharma
SELECT row_id
  FROM column_name
WHERE column_value LIKE '%12345';

Cela retournera le "row_id" lorsque "12345" sera le suffixe de queue de la "valeur_colonne" dans le "nom_colonne".

1
sheasie

Et si vous voulez obtenir un nombre dynamique de bons caractères après un caractère:

SELECT TRIM( 
    RIGHT(
        database.table.field, 
        (LENGTH(database.table.field) - LOCATE('-',database.table.field)) 
    )
)
FROM database.table;
1
xtrm