La réponse du haut ne convient pas lorsque les valeurs peuvent avoir une longueur inférieure à 4.
Dans T-SQL
Vous obtiendrez un "paramètre de longueur non valide passé à la bonne fonction" car il n'accepte pas les négatifs. Utilisez une instruction CASE:
SELECT case when len(foo) >= 4 then RIGHT(foo, LEN(foo) - 4) else '' end AS myfoo from mytable;
Dans Postgres
Les valeurs inférieures à 4 donnent le comportement surprenant ci-dessous au lieu d'une erreur, car le fait de transmettre des valeurs négatives à RIGHT coupe les premiers caractères au lieu de la chaîne entière. Il est plus logique d'utiliser à la RIGHT(MyColumn, -5)
place.
Un exemple comparant ce que vous obtenez lorsque vous utilisez la première réponse "longueur - 5" au lieu de "-5":
create temp table foo (foo) as values ('123456789'),('12345678'),('1234567'),('123456'),('12345'),('1234'),('123'),('12'),('1'), ('');
select foo, right(foo, length(foo) - 5), right(foo, -5) from foo;
foo len(foo) - 5 just -5
--------- ------------ -------
123456789 6789 6789
12345678 678 678
1234567 67 67
123456 6 6
12345
1234 234
123 3
12
1