web-dev-qa-db-fra.com

Comment taper un nouveau caractère de ligne dans SQL Server Management Studio

Dans la vue "grille de données" d'une table de données ouverte, comment saisir un nouveau caractère de ligne dans un champ nvarchar directement dans SSMS?

Y a-t-il un code alternatif?

38
Ronnie Overby

Tu ne peux pas.

Utilisez plutôt une fenêtre "nouvelle requête" et effectuez une mise à jour manuelle:

UPDATE mytable
SET textvalue = 
'This text
can include
line breaks'
WHERE rowid = 1234
28
BradC

Vous pouvez coller les lignes à partir d'un éditeur de texte utilisant des fins de ligne de style UNIX (CR + LF). J'utilise Notepad ++. Tout d’abord, allez dans Paramètres/Préférences/Nouveau document et changez le format de Windows à Unix. Ensuite, ouvrez un nouveau document, tapez vos lignes et copiez-les dans SSMS.

16
markltx

soit car (13) ou car (10) fonctionnerait. mais il est recommandé d'utiliser char (13) + char (10)

  • char (10) =\n - nouvelle ligne
  • char (13) =\r - va au début de la ligne
8
tecfield

Vous pouvez préparer le texte dans le bloc-notes et le coller dans SSMS. SSMS n'affichera pas les nouvelles lignes, mais elles sont là, comme vous pouvez le vérifier avec un élément select:

select *
from YourTable
where Col1 like '%' + char(10) + '%'
7
Andomar

J'ai eu des problèmes au début (je ne sais pas pourquoi), mais j'ai finalement réussi à utiliser SSMS pour SQL Server 2008.

Insérez ALT-13, puis ALT-10 à votre guise dans une colonne de type varchar (le symbole de la musique et un carré apparaissent et sont sauvegardés lorsque vous quittez la ligne). Au début, vous recevez un avertissement (!) À gauche de la ligne après l'avoir quitté. Il suffit de ré-exécuter votre instruction SELECT. Les symboles et l'avertissement disparaissent mais le CR/LF est enregistré. Vous devez inclure ALT-13 si vous souhaitez que le texte s'affiche correctement en HTML. Pour déterminer rapidement si cela a fonctionné, copiez le texte enregistré de SSMS dans le Bloc-notes.

Alternativement, si vous ne pouvez pas obtenir que cela fonctionne, vous pouvez faire la même chose en commençant par une colonne nvarchar. Toutefois, les symboles seront enregistrés sous forme de texte. Ainsi, vous devez convertir la colonne en varchar lorsque vous avez terminé de convertir les symboles en CR/LF.

Si vous souhaitez copier-coller du texte provenant d'une autre source (une autre ligne ou un autre tableau, HTML, Bloc-notes, etc.) et que votre texte ne soit pas tronqué au premier CR, j'ai constaté que la solution (Bloc-notes du programmeur) mentionnée au lien suivant fonctionne avec SSMS pour SQL Server 2008 en utilisant les types de colonne varchar et nvarchar.

http://dbaspot.com/sqlserver-programming/409451-how-i-enter-linefeed-when-modifying-text-field-2.html#post1523145

L'auteur de l'article (dbaspot) mentionne quelque chose à propos de la création de requêtes SQL - il ne sait pas ce qu'il veut dire. Suivez simplement les instructions sur le bloc-notes du programmeur et vous pouvez copier-coller du texte vers et depuis SSMS et conserver les LF dans les deux sens (en utilisant le bloc-notes du programmeur, pas le bloc-notes). Pour que le texte s'affiche correctement en HTML, vous devez ajouter des CR au texte copié dans SSMS. Pour ce faire, la meilleure solution consiste à exécuter une instruction UPDATE à l'aide de la fonction REPLACE pour ajouter des CR comme suit:

UPDATE table_name
SET column_name = REPLACE(column_name , CHAR(10), CHAR(13) + CHAR(10)).
2
mario

J'utilise INSERT 'a' + Char (10) + 'b' INTO où où

1
Dour High Arch

Ronnie,

La grille de données semble avaler toute tentative de coller un caractère de nouvelle ligne, y compris l'utilisation de ALT + 010. Microsoft ne répertorie pas les touches de raccourci qui pourraient aider. Les suspects habituels 

<ctrl>enter, 
<alt> enter, 
<ctrl><alt> enter, 
<shift> enter, etc

ne fonctionne pas, comme vous l'avez signalé.

Pour mémoire, si vous faites du développement Web, les sauts de ligne ne seront de toute façon pas affichés dans le navigateur (ils sont interprétés comme des espaces supplémentaires et sont ignorés). J'ai dû remplacer le saut de ligne par

<br> 

partout où je voulais qu'un saut de ligne apparaisse dans le navigateur (les zones de texte accepteront les sauts de ligne comme entrée utilisable).

Même si vous pouviez insérer un saut de ligne, je ne pense pas que la vue de la grille de données dans SSMS soit capable de l'afficher.

1
Robert Harvey

Ceci est possible si vous avez un caractère Newline existant dans la ligne ou une autre ligne.

Sélectionnez la case carrée qui représente le caractère Newline existant, copiez-le (control-C), puis collez-le (control-V) à l'emplacement souhaité.

C’est un peu ringard, mais j’ai réussi à le faire fonctionner dans SSMS 2008 et j’ai été incapable de faire fonctionner les autres suggestions (contrôle-entrée, alt-13 ou tout autre alt - ##).

1
Solomon Rutzky

Prova invece un utilizzare MS Access. Créer un fichier et choisir un modèle "Progresser avec nous" Questo creerà le fichier .adp.

Quindi apri semplicemente il tuo tavolo e premiCtrl+Enterpar la nuova linea.

Ajouter au panier Appunti funziona anche correttamente.

1
Pavel Chuchuva

Je trouve que le moyen le plus simple de le faire pour les mises à jour non répétables est d'utiliser MS Access et de créer une table liée, puis de mettre à jour les données selon vos besoins. Je suppose que l'équipe MS Access ne parle pas à l'équipe SMSS :)

0
DaBomb

Vous parlez de cliquer avec le bouton droit sur une table et de sélectionner "Éditer les 50 premières lignes", n'est-ce pas?

J'ai essayé [Ctl] [Enter] et [Alt] [Enter], mais aucun de ces travaux ne fonctionne.

Même lorsque j'insère des données avec CR/LF (à l'aide d'une instruction INSERT standard), elles apparaissent ici sur une seule ligne avec un rectangle représentant les codes de contrôle.

0
Rob Garrison

J'ai essayé d'entrer un caractère de nouvelle ligne à l'aide d'une feuille Excel ..__ J'ai saisi mes données en écrivant "abc" sous une cellule vide dans Excel, puis mis à jour ma base de données en utilisant la cellule vide située au-dessus de la cellule contenant "abc" et la cellule avec Les données. J'ai copié-collé les deux cellules dans mon SSMS . Cela a fonctionné pour moi

0
user7671497

Si vous essayez d’entrer des données directement dans la table en mode Grille (sans doute en faisant un clic droit sur TableName et en sélectionnant Ouvrir une table), vous pouvez alors entrer votre chaîne de texte unicode et, si vous souhaitez un retour chariot, tapez simplement 13 avec la touche Alt enfoncée dans la liste. clavier numérique.

Ce serait Alt + 13. Cela fonctionne uniquement à partir du pavé numérique et ne fonctionne pas avec les touches numériques situées en haut du clavier. Le retour de chariot sera stocké comme un carré

0
Raj

cela fonctionne pour moi (Afficher les résultats sous forme de texte - les résultats sous forme de grille masque les nouvelles lignes)

select '

a 

b

' 
0
Jimmy