-3
votes

Supprimer des chaînes à la fin d'un champ dans une table SQL Server

J'ai une colonne dans ma table SQL Server appelée brn_description avec les données ci-dessous: xxx

Je tiens à supprimer tous ces "C0 02/14 / 18 ". Il est d'environ 11 caractères de la droite.

Comment puis-je les supprimer s'il vous plaît et il suffit de revenir xxx


2 commentaires

"Environ 11 caractères" ou exactement 11 caractères?


Vous avez des suggestions. Notez qu'ils sont tous construits sur des hypothèses. Votre premier objectif est d'analyser vos valeurs existantes pour déterminer s'il existe un modèle fiable - celui que vous souhaitez utiliser comme base pour une solution. Des phrases telles que "environ 11 caractères" suggèrent que vous essayez toujours de pirater un chemin vers votre objectif. Que se passe-t-il lorsque le nom de la ville est composé de plusieurs mots (Los Angeles)? "C0" est-il toujours présent? Des années à 2 chiffres - qui n'a pas appris les leçons de Y2K? Chaque ligne a-t-elle ces 3 éléments? Que devriez-vous arriver s'ils ne le font pas? Pense d'abord. Documez vos hypothèses.


6 Réponses :


1
votes

Essayez ce code: Remplacez @str avec votre nom de colonne

déclarer @str nvarchar (max) = 'Minneapolis C0 02/14/18' Sélectionnez Gauche (@ Str, Len (@str) -11)


0 commentaires

1
votes

Vous pouvez utiliser remplacer si votre chaîne est corrigée xxx

démo


2 commentaires

dbfiddle.uk/...


Tant que la sous-chaîne à retirer de la fin n'est pas contenue au milieu de la chaîne. Donc dans ce cas j'imagine qu'il serait



0
votes

Vous voudrez peut-être:

update t
    set brn_description = left(brn_description, len(brn_description) - 11)
    where col like '% c0 [0-9][0-9]/[0-9][0-9]/[0-9][0-9]';


0 commentaires

0
votes

Juste au cas où il y a des espaces de fin ou des crlfs, etc., je choisirais de trouver la c0 plutôt que de couper les 11 derniers caractères xxx


0 commentaires

0
votes

Mettre à jour la colonne de jeux Brn_description = gauche (colonne, len (colonne) - 12)

ou dans ce cas, vous pouvez probablement utiliser Charindex car l'espace est assez évident

update brn_description règle colonne = gauche (colonne, charindex ('', colonne) - 1)


0 commentaires

0
votes

Vous voudrez peut-être supprimer tout après le deuxième espace de la droite (vous ne pouvez pas utiliser le premier de la gauche si vous avez par exemple. "Los Angeles"). Localisez l'index de cet espace avec charindex () code> sur le Reverse () code> de la chaîne. Une fois que vous l'avez eu, vous pouvez soustraire la longueur de la longueur de la chaîne, que vous obtenez avec len () code> et prenez de nombreux caractères de gauche avec gauche () code> (le La longueur est la même si elle est inversée ou non, c'est pourquoi cela fonctionne).

SELECT left(brn_description, len(brn_description) - charindex(' ', reverse(brn_description), charindex(' ', reverse(brn_description)) + 1))
       FROM (SELECT 'Minneapolis c0 02/14/18' brn_description
             UNION ALL
             SELECT 'Sacramento c0 02/14/18' brn_description
             UNION ALL
             SELECT 'Vancouver c0 02/14/18' brn_description
             UNION ALL
             SELECT 'Los Angeles c0 02/14/18' brn_description) x;


0 commentaires