416 votes

Remplacer un saut de ligne dans TSQL

Je voudrais remplacer (ou supprimer) un caractère de saut de ligne dans un TSQL-chaîne. Des Idées?

L'évidence

REPLACE(@string, CHAR(13), '')

tout simplement pas le faire...

850voto

RBarryYoung Points 23349

En fait d'une nouvelle ligne dans une commande SQL ou d'un script de chaîne peut être l'un des CR, LF ou CR+LF. Pour obtenir toutes, vous besoin de quelque chose comme ceci:

SELECT REPLACE(REPLACE(@str, CHAR(13), ''), CHAR(10), '')

144voto

Mitch Wheat Points 169614
REPLACE(@string, CHAR(13) + CHAR(10), '')

36voto

NateJ Points 426

J'ai peut-être un an de retard à la fête, mais je travaille sur des requêtes & MS-SQL tous les jours, et je suis fatigué de la fonctions intégrées LTRIM() & RTRIM() (et en ayant toujours à les appeler ainsi), et de ne pas attraper "sale" de données qui ont des retours à la ligne à la fin, j'ai donc décidé qu'il était grand temps de mettre en œuvre une fonction TRIM bon. J'avais bienvenue commentaires de leurs pairs!

-- =============================================
-- Description:      TRIMs a string 'for real' - removes standard whitespace as well as ASCII-char's 9-13,
-- which are tab, line-feed, vert tab, form-feed, & carriage-return (respectively)
-- =============================================
CREATE FUNCTION [Trim] (
       @Str nvarchar(max)
)
RETURNS nvarchar(max) AS
BEGIN
       DECLARE @Result nvarchar(max)

       SET @Result = LTRIM(RTRIM(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
              LTRIM(RTRIM(@Str)), CHAR(9), ''), CHAR(10), ''), CHAR(11), ''), CHAR(12), ''), CHAR(13), '')))

       RETURN @Result
END

Cheers!

32voto

Cerebrus Points 18045

Le retour à la ligne en T-SQL est représenté par CHAR(13) ET CHAR(10) (retour Chariot + saut de Ligne). En conséquence, vous pouvez créer une instruction de remplacement avec le texte que vous souhaitez remplacer le saut de ligne avec.

REPLACE(MyField, CHAR(13) + CHAR(10), 'something else')

24voto

porkandcheese Points 91

Pour faire ce que la plupart des gens veulent, de créer un espace réservé qui n'est pas un vrai caractère de saut de ligne. Ensuite, vous pouvez combiner les approches pour:

REPLACE(REPLACE(REPLACE(MyField, CHAR(13) + CHAR(10), 'something else'), CHAR(13), 'something else'), CHAR(10), 'something else')

De cette façon, vous remplacer qu'une seule fois. L'approche de:

REPLACE(REPLACE(MyField, CHAR(13), ''), CHAR(10), '')

Fonctionne très bien si vous voulez juste pour se débarrasser de la CRLF caractères, mais si vous voulez un espace réservé, tels que
ou quelque chose, puis la première approche est un peu plus précis.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X