web-dev-qa-db-fra.com

Supprimer les derniers N caractères du champ dans une base de données SQL Server

J'ai un tableau de plus de 4 millions de lignes et accidentellement dans une colonne, il y a plus de données que nécessaire.

Par exemple, au lieu de ABC, il y a ABC DEFG.

Comment puis-je supprimer ces N symboles en utilisant TSQL? Veuillez noter que je souhaite supprimer ces caractères de la base de données, PAS simplement sélectionner une sous-chaîne. Merci

26
seeker
UPDATE mytable SET column=LEFT(column, LEN(column)-5)

Supprime les 5 derniers caractères de la colonne (chaque ligne de mytable)

62
erikxiv

J'ai obtenu la réponse à ma propre question, et voici:

select reverse(stuff(reverse('a,b,c,d,'), 1, N, ''))

Où N est le nombre de caractères à supprimer. Cela évite d'écrire deux fois la colonne/chaîne complexe

12
Fernando Torres

Vous pouvez le faire en utilisant la fonction SUBSTRING():

UPDATE table SET column = SUBSTRING(column, 0, LEN(column) + 1 - N)

Supprime les N derniers caractères de chaque ligne de la colonne

1
Daren

Cela devrait le faire, en supprimant les caractères de la gauche par un ou le nombre nécessaire.

lEFT(columnX,LEN(columnX) - 1) AS NewColumnName
0
Peter Tountas