SELECT RIGHT(MyColumn, LEN(MyColumn) - 4) AS MyTrimmedColumn
Edit: Pour expliquer, RIGHT prend 2 arguments - la chaîne (ou colonne) sur laquelle opérer, et le nombre de caractères à renvoyer (en commençant par le côté "droit" de la chaîne). LEN renvoie la longueur des données de la colonne et nous soustrayons quatre pour que notre fonction DROITE laisse les 4 caractères les plus à gauche "derrière".
J'espère que cela a du sens.
Modifier à nouveau - Je viens de lire la réponse d'Andrew, et il se peut très bien qu'il ait interprété correctement, et je me trompe peut-être. Si tel est le cas (et que vous souhaitez METTRE À JOUR la table plutôt que de simplement renvoyer des résultats trafiqués), vous pouvez le faire:
UPDATE MyTable
SET MyColumn = RIGHT(MyColumn, LEN(MyColumn) - 4)
Il est sur la bonne voie, mais sa solution conservera les 4 caractères au début de la chaîne, plutôt que de supprimer les 4 caractères.
COL_LENGTH('MyTable', 'MyColumn')
au lieu deLEN(MyColumn)
parce que dans mon cas, je voulais exclure les n premiers caractères, quelle que soit la taille du contenu réel dans la colonne, mais cela fonctionnait bien à part ça!Cela dit, en commençant par la première
1
position de caractère, remplacez les4
caractères par rien''
la source
someColumn
s'agit de quelque chose de complexe comme une sous-sélection d'un CTE ou quelque chose, cela ne nécessite pas de l'évaluer deux fois.Pourquoi utiliser LEN pour avoir 2 fonctions de chaîne? Tout ce dont vous avez besoin est le caractère 5 sur ...
la source
Essaye ça:
la source
Voici une simple maquette de ce que vous essayez de faire :)
Alors, utilisez la dernière instruction contre le champ que vous souhaitez découper :)
La fonction SUBSTRING réduit Code1, en commençant au CINQUIÈME caractère, et en continuant pour la longueur de CODE1 moins 4 (le nombre de caractères sautés au début).
la source
La chose complète
la source
Vous pouvez également le faire en SQL.
syntaxe
la source
Essaye ça. 100% de travail
la source
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:
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":
la source
Il y a la fonction de garniture intégrée qui est parfaite pour le but.
http://www.postgresql.org/docs/8.1/static/functions-string.html
la source
Ce serait bien de partager, pour DB2:
INSERT(someColumn, 1, 4, '')
Stuff
n'est pas pris en charge dans DB2la source
Si vous devez supprimer les premiers caractères qui sont précédés d'un caractère spécial comme
#
, c'est un bon:la source