{"id":30403,"date":"2024-02-29T07:02:00","date_gmt":"2024-02-29T06:02:00","guid":{"rendered":"https:\/\/expert-only.com\/?p=30403"},"modified":"2026-05-18T13:55:43","modified_gmt":"2026-05-18T11:55:43","slug":"dividir-texto-delimitado-numa-coluna-no-sql-server","status":"publish","type":"post","link":"https:\/\/expert-only.com\/pt-pt\/t-sql\/dividir-texto-delimitado-numa-coluna-no-sql-server\/","title":{"rendered":"Dividir Texto Delimitado numa Coluna no SQL Server"},"content":{"rendered":"\n<h4 class=\"wp-block-heading has-text-align-left\"><em>Como dividir dados de uma string \u00fanica em linha com um delimitador em uma coluna usando o SQL Server?<\/em><\/h4>\n\n\n\n<p>Tutorial sobre como dividir texto delimitado numa coluna no SQL Server, sendo o delimitador geralmente um ponto e v\u00edrgula ou uma v\u00edrgula. Com uma consulta T-SQL no SQL Server 2012, \u00e9 poss\u00edvel cortar uma string composta de texto baseado em um caractere especial com XML. Pode ser delimitado por v\u00edrgulas, pontos e v\u00edrgulas, tabula\u00e7\u00f5es, tra\u00e7os, sublinhados ou at\u00e9 pontos. Basicamente, pode ser qualquer caractere especial que define o texto delimitado. Este tutorial \u00e9 para vers\u00f5es do SQL Server anteriores a 2016, ou seja, SQL Server 2008 e SQL Server 2012, por exemplo.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-1-sobre-texto-delimitado-no-sql-server-2008-2012-e-2014\">1. Sobre texto delimitado no SQL Server 2008, 2012 e 2014<\/h2>\n\n\n\n<p>De fato, uma maneira f\u00e1cil e eficiente \u00e9 usar fun\u00e7\u00f5es XML integradas do SQL Server como CONVERT() e NODES(). Em seguida, usa-se uma consulta Transact-SQL para dividir o texto em v\u00e1rias linhas. De fato, a pot\u00eancia das fun\u00e7\u00f5es XML permite ao desenvolvedor SQL analisar e estruturar o texto mais facilmente. Por exemplo, vamos cortar facilmente esta string contendo as dez maiores cidades dos EUA delimitadas por pontos e v\u00edrgulas:<\/p>\n\n\n\n<p><strong>&#8220;New York; Los Angeles; Chicago; Houston; Phoenix; Philadelphia; San Antonio; San Diego; Dallas; San Jose&#8221;<\/strong><\/p>\n\n\n\n<p>Este exemplo funciona com qualquer tipo de separadores, tamb\u00e9m chamados de delimitadores. Os mais usados s\u00e3o:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Arquivo delimitado por v\u00edrgula<\/strong><\/li>\n\n\n\n<li><strong>Arquivo delimitado por ponto e v\u00edrgula<\/strong><\/li>\n\n\n\n<li><strong>Arquivo delimitado por tabula\u00e7\u00e3o<\/strong><\/li>\n\n\n\n<li><strong>Arquivo delimitado por barra vertical<\/strong><\/li>\n\n\n\n<li><strong>Arquivo delimitado por tra\u00e7o<\/strong><\/li>\n<\/ul>\n\n\n\n<p>E esta solu\u00e7\u00e3o XML permite <strong>dividir textos em vers\u00f5es anteriores ao SQL Server 2016<\/strong>, como: SQL Server 2008 R2, SQL Server 2012 e SQL Server 2014.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-2-consulta-t-sql-para-dividir-string-por-delimitador-em-uma-coluna\">2. Consulta T-SQL para dividir string por delimitador em uma coluna<\/h2>\n\n\n\n<p>Vamos continuar a explicar como dividir texto delimitado numa coluna \u00fanica com linhas diferentes no SQL Server. Por exemplo, esta consulta Transact-SQL divide a string contendo a lista de cidades delimitadas por pontos e v\u00edrgulas usando as fun\u00e7\u00f5es integradas XML.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"sql\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">-- Declare as vari\u00e1veis\nDECLARE @String nvarchar(max),\n@Delimiter char(1),\n@XMLString xml;\n\n-- Inicialize a string e o delimitador, aqui \u00e9 o caractere ponto e v\u00edrgula\nSELECT @String = 'New York;Los Angeles;Chicago;Houston;Phoenix;Philadelphia;San Antonio;San Diego;Dallas;San Jose',\n@Delimiter = ';'\n\n-- Constru\u00e7\u00e3o de String XML usando a fun\u00e7\u00e3o T-SQL CONVERT()\nSET @XMLString = \nCONVERT(xml,'&lt;root>&lt;city>' +\nREPLACE(@String,@Delimiter,'&lt;\/city>&lt;city>') +\n'&lt;\/city>&lt;\/root>');\n\nSELECT @XMLString;\n\n-- Sele\u00e7\u00e3o do resultado ao analisar a vari\u00e1vel @XMLString com as fun\u00e7\u00f5es XML .value() .nodes()\nSELECT Result.value('.','varchar(20)') AS CITY\nFROM @XMLString.nodes('\/root\/city') AS T(Result);\n<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-3-resultado-intermediario-da-string-dividida-em-formato-xml\">3. Resultado intermedi\u00e1rio da string dividida em formato XML<\/h2>\n\n\n\n<p>De fato, para entender a l\u00f3gica da consulta, esta string delimitada estava inicialmente contida na vari\u00e1vel @String, como texto simples. E a vari\u00e1vel @XMLString cont\u00e9m apenas a lista inicial de cidades em formato XML. No entanto, desta vez a <strong>lista est\u00e1 rodeada por tags XML &lt;root&gt;&lt;\/root&gt; e &lt;city&gt;&lt;\/city&gt;<\/strong>. XML \u00e9 um formato de dados complexo comumente usado em arquivos de <a href=\"https:\/\/ecosio.com\/en\/blog\/edi-file-formats-explained\/\" target=\"_blank\" rel=\"noreferrer noopener\">troca de dados<\/a>.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"xml\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">&lt;root>\n\t&lt;city>New York&lt;\/city>\n\t&lt;city>Los Angeles&lt;\/city>\n\t&lt;city>Chicago&lt;\/city>\n\t&lt;city>Houston&lt;\/city>\n\t&lt;city>Phoenix&lt;\/city>\n\t&lt;city>Philadelphia&lt;\/city>\n\t&lt;city>San Antonio&lt;\/city>\n\t&lt;city>San Diego&lt;\/city>\n\t&lt;city>Dallas&lt;\/city>\n\t&lt;city>San Jose&lt;\/city>\n&lt;\/root><\/pre>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"780\" height=\"760\" src=\"https:\/\/expert-only.com\/wp-content\/uploads\/2023\/01\/t-sql_split_string_delimiter_into_one_column.jpg\" alt=\"Dividir string com delimitador em uma coluna com SQL Server\" class=\"wp-image-21982\" srcset=\"https:\/\/expert-only.com\/wp-content\/uploads\/2023\/01\/t-sql_split_string_delimiter_into_one_column.jpg 780w, https:\/\/expert-only.com\/wp-content\/uploads\/2023\/01\/t-sql_split_string_delimiter_into_one_column-300x292.jpg 300w, https:\/\/expert-only.com\/wp-content\/uploads\/2023\/01\/t-sql_split_string_delimiter_into_one_column-768x748.jpg 768w\" sizes=\"auto, (max-width: 780px) 100vw, 780px\" \/><figcaption class=\"wp-element-caption\">Dividir string com delimitador em uma coluna com SQL Server<\/figcaption><\/figure>\n<\/div>\n\n\n<h3 class=\"wp-block-heading\">Diferentes maneiras de dividir um texto delimitado<\/h3>\n\n\n\n<p>Para resumir, este artigo mostra como dividir texto delimitado em numa coluna \u00fanica no SQL Server com dados em linhas diferentes. O primeiro exemplo usa as fun\u00e7\u00f5es XML e \u00e9 f\u00e1cil de copiar e colar. Por isso, reutilize-o para um cen\u00e1rio de projeto real ou prova de conceito. Da mesma forma, para o SQL Server 2016 e vers\u00f5es superiores, voc\u00ea pode simplesmente usar a fun\u00e7\u00e3o nativa Split_String.<\/p>\n\n\n<div id=\"rank-math-faq\" class=\"rank-math-block\">\n<div class=\"rank-math-list \">\n<div id=\"faq-question-6a0afe3f4e9c0\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">O que \u00e9 um texto delimitado? <\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Um texto delimitado \u00e9 uma \u00fanica linha que tem v\u00e1rias partes. Cada parte \u00e9 delimitada com um s\u00edmbolo espec\u00edfico, por exemplo, um ponto e v\u00edrgula, uma tabula\u00e7\u00e3o, uma barra vertical.<\/p>\n\n<\/div>\n<\/div>\n<div id=\"faq-question-6a0afe3f4e9c2\" class=\"rank-math-list-item\">\n<h3 class=\"rank-math-question \">O que \u00e9 um arquivo de texto com delimitadores? <\/h3>\n<div class=\"rank-math-answer \">\n\n<p>Um arquivo de texto delimitado \u00e9 um arquivo que tem v\u00e1rias colunas e cada dado contido em cada linha \u00e9 delimitado por um separador. Por exemplo, o pr\u00f3prio separador de linha \u00e9 um retorno de carro ou uma quebra de linha.<\/p>\n\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n\n\n<p>Da mesma forma, voc\u00ea pode estar interessado em aprender <a href=\"https:\/\/expert-only.com\/pt-pt\/t-sql\/remover-quebras-de-linha-do-sql-server\/\"><strong>como adicionar ou remover quebras de linha de strings do SQL Server<\/strong><\/a> para armazen\u00e1-las em uma \u00fanica linha de uma tabela. E, ao mesmo tempo, evitar deslocamentos de linha ao importar arquivos.<\/p>\n\n\n\n<figure class=\"wp-block-embed aligncenter is-type-wp-embed is-provider-tutoriais-sql-e-ti wp-block-embed-tutoriais-sql-e-ti\"><div class=\"wp-block-embed__wrapper\">\n<blockquote class=\"wp-embedded-content\" data-secret=\"E6His7E19r\"><a href=\"https:\/\/expert-only.com\/en\/t-sql\/how-to-manage-line-breaks-in-sql-server\/\">How To Manage Line Breaks in SQL Server ?<\/a><\/blockquote><iframe loading=\"lazy\" class=\"wp-embedded-content\" sandbox=\"allow-scripts\" security=\"restricted\" style=\"position: absolute; clip: rect(1px, 1px, 1px, 1px);\" title=\"&#8220;How To Manage Line Breaks in SQL Server ?&#8221; &#8212; Tutoriais SQL e TI\" src=\"https:\/\/expert-only.com\/en\/t-sql\/how-to-manage-line-breaks-in-sql-server\/embed\/#?secret=UH1PyWnobz#?secret=E6His7E19r\" data-secret=\"E6His7E19r\" width=\"500\" height=\"282\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\"><\/iframe>\n<\/div><\/figure>\n","protected":false},"excerpt":{"rendered":"<div class=\"mh-excerpt\"><p>Como dividir dados de uma string \u00fanica em linha com um delimitador em uma coluna usando o SQL Server? Tutorial sobre como dividir texto delimitado numa coluna no SQL Server, sendo o delimitador geralmente um ponto e v\u00edrgula ou <a class=\"mh-excerpt-more\" href=\"https:\/\/expert-only.com\/pt-pt\/t-sql\/dividir-texto-delimitado-numa-coluna-no-sql-server\/\" title=\"Dividir Texto Delimitado numa Coluna no SQL Server\">&#8230;<\/a><\/p>\n<\/div>","protected":false},"author":1,"featured_media":5790,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[456],"tags":[],"class_list":{"0":"post-30403","1":"post","2":"type-post","3":"status-publish","4":"format-standard","5":"has-post-thumbnail","7":"category-t-sql"},"_links":{"self":[{"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/posts\/30403","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/comments?post=30403"}],"version-history":[{"count":2,"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/posts\/30403\/revisions"}],"predecessor-version":[{"id":31215,"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/posts\/30403\/revisions\/31215"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/media\/5790"}],"wp:attachment":[{"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/media?parent=30403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/categories?post=30403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/expert-only.com\/pt-pt\/wp-json\/wp\/v2\/tags?post=30403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}