En SQL, comment puis-je supprimer les 4 premiers caractères des valeurs d'une colonne spécifique dans une table? Le nom de colonne est Student Code
et un exemple de valeur est ABCD123Stu1231
. Je veux supprimer les 4 premiers caractères de ma table pour tous les enregistrements
Guidez-moi s'il-vous-plaît
SELECT RIGHT(MyColumn, LEN(MyColumn) - 4) AS MyTrimmedColumn
Edit: Pour expliquer, RIGHT prend 2 arguments - la chaîne (ou la colonne) sur laquelle opérer, et le nombre de caractères à renvoyer (en partant du côté "droit" de la chaîne). LEN renvoie la longueur des données de colonne et nous soustrayons quatre afin 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 peux me tromper. Si tel est le cas (et que vous souhaitez mettre à jour la table plutôt que de simplement renvoyer des résultats falsifiés), vous pouvez le faire:
UPDATE MyTable
SET MyColumn = RIGHT(MyColumn, LEN(MyColumn) - 4)
Il est sur la bonne voie, mais sa solution va garder les 4 caractères au début de la chaîne, plutôt que de supprimer ces 4 caractères.
Stuff(someColumn, 1, 4, '')
Ceci dit, en commençant par le premier 1
position du caractère, remplacez 4
caractères par rien ''
Pourquoi utiliser LEN alors que vous avez 2 fonctions de chaîne? Tout ce dont vous avez besoin c'est du personnage 5 sur ...
...SUBSTRING (Code1, 5, 8000)...
Essaye ça:
update table YourTable
set YourField = substring(YourField, 5, len(YourField)-3);
Voici une simple maquette de ce que vous essayez de faire :)
CREATE TABLE Codes
(
code1 varchar(10),
code2 varchar(10)
)
INSERT INTO Codes (CODE1, CODE2) vALUES ('ABCD1234','')
UPDATE Codes
SET code2 = SUBSTRING(Code1, 5, LEN(CODE1) -4)
Alors, utilisez la dernière instruction dans le champ que vous voulez couper :)
La fonction SUBSTRING supprime Code1, en commençant par le cinquième caractère et en continuant pour la longueur de CODE1 moins 4 (le nombre de caractères ignorés au début).
La chose complète
DECLARE @v varchar(10)
SET @v='#temp'
select STUFF(@v, 1, 1, '')
WHERE LEFT(@v,1)='#'
Essaye ça. 100% de travail
UPDATE Table_Name
SET RIGHT(column_name, LEN(column_name) - 1)
Il y a la fonction de trim intégrée qui est parfaite pour le but.
SELECT trim(both 'ag' from 'asdfg');
btrim
-------
sdf
(1 riga)
http://www.postgresql.org/docs/8.1/static/functions-string.html
Il serait bon de partager. Pour DB2, utilisez: INSERT(someColumn, 1, 4, '')
Stuff
n'est pas pris en charge dans DB2
Vous pouvez aussi le faire en SQL ..
substring(StudentCode,4,len(StudentCode))
syntaxe
substring (ColumnName,<Number of starting Character which u want to remove>,<length of given string>)
La réponse la plus fréquente a un comportement surprenant lorsque la longueur de la chaîne est inférieure à celle attendue, car le fait de transmettre des valeurs négatives à DROITE tronque les premiers caractères au lieu de la totalité de la chaîne. Il est plus logique d'utiliser simplement RIGHT(MyColumn, -5)
à la place.
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
Si vous devez supprimer les premiers caractères précédés d'un caractère spécial tel que #
, il s'agit d'un bon exemple:
UPDATE tblInvalidID
SET [ColumnName] =stuff(ColumnName, 1, charindex('#', ColumnName), ' ')