Je n'ai pas vu de questions similaires posées sur ce sujet, et j'ai dû rechercher ceci pour quelque chose sur lequel je travaille en ce moment. J'ai pensé que je posterais la réponse pour le cas où quelqu'un d'autre aurait la même question.
sql
sql-server
line-breaks
Mark Struzinski
la source
la source
Réponses:
char(13)
estCR
. Pour les sauts de ligne de style DOS / WindowsCRLF
, vous voulezchar(13)+char(10)
, comme:la source
+
, SQL Server commencera à se plaindre que votre requête est trop profondément imbriquée. Ma solution était plutôt d'utiliser la réponse de Rob Cooper à la place, mais avec un jeton beaucoup plus long et plus obscur.J'ai trouvé la réponse ici: http://blog.sqlauthority.com/2007/08/22/sql-server-t-sql-script-to-insert-carriage-return-and-new-line-feed-in- code/
Vous venez de concaténer la chaîne et d'insérer un
CHAR(13)
où vous voulez que votre saut de ligne.Exemple:
Cela imprime ce qui suit:
la source
NCHAR(0x1234)
pour obtenir un caractère unicode. Pas nécessaire pour insérer des sauts de ligne, mais peut être utile si l'on doit insérer / rechercher des caractères Unicode.print
place deselect
, comme:DECLARE @text NVARCHAR(100); SET @text = 'This is line 1.' + CHAR(13) + 'This is line 2.'; print @text;
Une autre façon de procéder est en tant que telle:
Autrement dit, l'insertion d'un saut de ligne dans votre requête lors de son écriture ajoutera le même saut à la base de données. Cela fonctionne dans SQL Server Management Studio et Query Analyzer. Je crois que cela fonctionnera également en C # si vous utilisez le signe @ sur les chaînes.
la source
Exécutez ceci dans SSMS, il montre comment les sauts de ligne dans le SQL lui-même deviennent une partie des valeurs de chaîne qui s'étendent sur les lignes:
Résultat:
ligne 1
ligne 2
ligne 3
Quelle est la durée d'un saut de ligne vierge?
2
Quelles sont les valeurs ASCII?
13
10
Ou si vous préférez spécifier votre chaîne sur une seule ligne (presque!), Vous pouvez utiliser
REPLACE()
comme ceci (éventuellement utiliserCHAR(13)+CHAR(10)
comme remplacement):la source
Suivre un Google ...
Prendre le code du site Web:
Il semble que cela puisse être fait en remplaçant un espace réservé par CHAR (13)
Bonne question, je ne l'ai jamais fait moi-même :)
la source
Je suis arrivé ici parce que je craignais que les cr-lfs que j'ai spécifiés dans les chaînes C # ne soient pas affichés dans les réponses aux requêtes SQl Server Management Studio.
Il s'avère qu'ils sont là, mais ne sont pas affichés.
Pour "voir" les cr-lfs, utilisez l'instruction print comme:
la source
Voici une fonction C # qui ajoute une ligne de texte à un blob de texte existant, délimité par des CRLF, et renvoie une expression T-SQL appropriée pour
INSERT
ou desUPDATE
opérations. Il contient une partie de notre gestion d'erreurs propriétaire, mais une fois que vous l'avez extraite, cela peut être utile - je l'espère.la source
Je dirais
ou
la source
C'est toujours cool, car lorsque vous obtenez des listes exportées depuis, par exemple Oracle, vous obtenez des enregistrements sur plusieurs lignes, ce qui peut être intéressant pour, disons, les fichiers cvs, alors méfiez-vous.
Quoi qu'il en soit, la réponse de Rob est bonne, mais je conseillerais d'utiliser autre chose que @, essayez-en un peu plus, comme §§ @@ §§ ou quelque chose, donc cela aura une chance d'être unique. (Mais n'oubliez pas la longueur du champ
varchar
/ dansnvarchar
lequel vous insérez ..)la source
Toutes ces options fonctionnent selon votre situation, mais vous ne verrez peut-être aucune d'entre elles fonctionner si vous utilisez SSMS (comme mentionné dans certains commentaires SSMS cache les CR / LF)
Donc, plutôt que de vous conduire dans le virage, vérifiez ce paramètre dans
Tools
|
Options
la source