web-dev-qa-db-fra.com

Comment puis-je supprimer les premiers caractères d'une colonne spécifique dans une table?

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

139
Shyju
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.

227
Aaron Alton
Stuff(someColumn, 1, 4, '')

Ceci dit, en commençant par le premier 1 position du caractère, remplacez 4 caractères par rien ''

77
AaronLS

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)...
28
gbn

Essaye ça:

update table YourTable
set YourField = substring(YourField, 5, len(YourField)-3);
12
Andrew Hare

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).

6
Rob

La chose complète

DECLARE @v varchar(10)

SET @v='#temp'

select STUFF(@v, 1, 1, '')
WHERE LEFT(@v,1)='#'
4
Higarian

Essaye ça. 100% de travail

UPDATE Table_Name
SET RIGHT(column_name, LEN(column_name) - 1)

2
user8613096

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

1
linuxatico

Il serait bon de partager. Pour DB2, utilisez: INSERT(someColumn, 1, 4, '')

Stuff n'est pas pris en charge dans DB2

1
Superb Saif

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>)
1
Durgesh Pandey

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                           
0
Noumenon

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), ' ') 
0
Prachita