Não vi perguntas semelhantes sobre esse tópico e tive que pesquisar isso para algo em que estou trabalhando no momento. Pensei em postar a resposta para o caso de alguém ter a mesma pergunta.
sql
sql-server
line-breaks
Mark Struzinski
fonte
fonte
Respostas:
char(13)
éCR
. ParaCRLF
quebras de linha no estilo DOS / Windows , você desejachar(13)+char(10)
:fonte
+
, o SQL Server começará a reclamar que sua consulta está muito aninhada. Em vez disso, minha solução foi usar a resposta de Rob Cooper, mas com um token muito mais longo e mais obscuro.Encontrei a resposta aqui: http://blog.sqlauthority.com/2007/08/22/sql-server-t-sql-script-to-insert-carriage-return-and-new-line-feed-in- código/
Você apenas concatena a string e insere um
CHAR(13)
onde deseja que sua quebra de linha.Exemplo:
Isso imprime o seguinte:
fonte
NCHAR(0x1234)
para obter um caractere unicode. Não é necessário inserir quebras de linha, mas pode ser útil se for necessário inserir / procurar caracteres unicode.print
vez deselect
, como:DECLARE @text NVARCHAR(100); SET @text = 'This is line 1.' + CHAR(13) + 'This is line 2.'; print @text;
Outra maneira de fazer isso é:
Ou seja, simplesmente inserir uma quebra de linha na sua consulta enquanto a escreve adicionará a quebra semelhante ao banco de dados. Isso funciona no SQL Server Management studio e no Query Analyzer. Acredito que isso também funcionará em c # se você usar o sinal @ nas strings.
fonte
Execute isso no SSMS, mostra como as quebras de linha no próprio SQL se tornam parte dos valores de sequência que abrangem linhas:
Resultado:
Linha 1
Linha 2
Linha 3
Quanto tempo dura um feed de linha em branco?
2
Quais são os valores ASCII?
13
10
Ou, se preferir especificar sua string em uma linha (quase!), Você pode empregar
REPLACE()
assim (opcionalmente useCHAR(13)+CHAR(10)
como substituto):fonte
Após um Google ...
Tomando o código do site:
Parece que isso pode ser feito substituindo um espaço reservado por CHAR (13)
Boa pergunta, nunca fiz isso sozinho :)
fonte
Cheguei aqui porque estava preocupado com o fato de que os cr-lfs especificados em c # strings não estavam sendo mostrados nas respostas de consulta do SQl Server Management Studio.
Acontece que eles estão lá, mas não estão sendo exibidos.
Para "ver" os cr-lfs, use a instrução print como:
fonte
Aqui está uma # função C que prepends uma linha de texto para um blob texto existente, delimitado por CRLFs, e retorna uma expressão T-SQL apropriado para
INSERT
ouUPDATE
operações. Ele contém alguns dos nossos erros proprietários de manipulação, mas uma vez que você o reproduz, pode ser útil - espero que sim.fonte
eu diria
ou
fonte
Isso é sempre legal, porque quando você obtém listas exportadas, digamos do Oracle, obtém registros que abrangem várias linhas, o que, por sua vez, pode ser interessante para, por exemplo, arquivos cvs, por isso tome cuidado.
De qualquer forma, a resposta de Rob é boa, mas eu recomendaria usar algo diferente de @, tente um pouco mais, como §§ @@ §§ ou algo assim, para que haja uma chance de alguma singularidade. (Mas ainda assim, lembre-se do tamanho do campo
varchar
/nvarchar
no qual você está inserindo ..)fonte
Todas essas opções funcionam dependendo da sua situação, mas você pode não vê-las funcionar se estiver usando o SSMS (conforme mencionado em alguns comentários O SSMS oculta os CR / LFs)
Portanto, em vez de se curvar, verifique esta configuração em
Tools
|
Options
fonte