Quelle est la manière la plus simple d'utiliser T-SQL / MS-SQL pour ajouter une chaîne à des cellules de tableau existantes?
J'ai une table avec un nom de fichier de la colonne.
J'ai récemment effectué une insertion dans cette colonne, mais dans ma précipitation oublié d'ajouter l'extension de fichier de tous les noms des fichiers d'entrée. Heureusement, ils sont tous".jpg' images.
Comment puis-je mettre à jour facilement le " nom "de la colonne de ces champs insérés (en supposant que je peux sélectionner les dernières lignes, sur la base des valeurs d'id) pour inclure le".jpg' extension?
source d'informationauteur Matt Mitchell
Vous devez vous connecter pour publier un commentaire.
La solution est:
RTRIM est nécessaire car, sinon, le [nom de fichier] de la colonne dans son ensemble sera sélectionné pour la concaténation de chaîne c'est à dire si c'est un varchar(20) de la colonne et le nom de fichier est à seulement 10 lettres alors il sera toujours sélectionner ces 10 lettres puis de 10 places. Ce sera à son tour entraîner une erreur que vous essayez de vous adapter à 20 caractères + 3 dans un de 20 caractères de long champ.
MattMitchell la réponse est correcte si la colonne est un CHAR(20), mais n'est pas vrai, si c'était un VARCHAR(20) et les espaces n'avait pas été explicitement entrée.
Si vous ne l'essayer sur un champ CHAR sans la fonction RTRIM, vous obtiendrez un "Chaîne de caractères ou des données binaires seront tronquées" erreur.
Facile et agréable je pense.
Edit: Oh +1 pour @MattMitchell réponse à la rtrim suggestion.
Si les données d'origine est venu à partir d'un char de la colonne ou de la variable (avant d'être inséré dans ce tableau), puis les données d'origine ont les espaces ajoutés avant de devenir un varchar.
Leçon de vie : ne jamais utiliser de char.
Je voulais régler David B "Leçon de Vie". Je pense qu'il devrait être "ne jamais utiliser de char longueur variable chaîne de valeurs" -> Il y a des utilisations valides pour le type de données char, juste pas autant que certaines personnes pensent 🙂
La réponse au mystère de la les espaces peuvent être trouvés dans la ANSI_PADDING
Pour plus d'informations, visitez: SET ANSI_PADDING (Transact-SQL)
La valeur par défaut est ANSI_PADDIN. Cela va affecter la colonne uniquement lorsqu'il est créé, mais pas pour les colonnes existantes.
Avant d'exécuter la requête de mise à jour, vérifiez vos données. Il pourrait avoir été compromise.
Exécuter la requête suivante pour trouver des compromis lignes:
Ces lignes ont perdu certains caractères ou il n'y a pas assez d'espace pour l'ajout de l'extension de fichier.