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?
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
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)
Right
est un bon choix mais vous pouvez également utiliser substring
comme ceci-
SELECT Substring(columnname,-5) as value FROM table_name
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".
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;