BuildRowsetFromString
Descrição
Cria um rowset a partir de uma string de texto, quebrando-a em linhas com base em um delimitador que você define. É extremamente útil quando você tem dados armazenados como texto separado por vírgula (ou outro caractere) em uma Data Extension - situação muito comum quando se trabalha com listas de produtos, categorias de interesse ou múltiplos valores em um único campo. Como a coluna resultante não possui nome atribuído, você a referencia usando número ordinal (posição 1).
Sintaxe
BuildRowsetFromString(@sourceData, @delimiter)
Parâmetros
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
| sourceData | string | Sim | A string que contém os dados a serem carregados no rowset. |
| delimiter | string | Sim | O caractere usado como delimitador na string de origem (ex: vírgula, pipe, ponto-e-vírgula). |
Exemplo básico
Imagine que você tem uma string com as cidades de atuação de uma rede de lojas e precisa exibir cada uma separadamente no e-mail:
%%[
VAR @cidades, @delimitador, @rowset, @i, @cidade
SET @cidades = "São Paulo,Rio de Janeiro,Belo Horizonte,Curitiba"
SET @delimitador = ","
SET @rowset = BuildRowsetFromString(@cidades, @delimitador)
FOR @i = 1 TO RowCount(@rowset) DO
SET @cidade = Field(Row(@rowset, @i), 1)
]%%
Cidade: %%=v(@cidade)=%%<br>
%%[NEXT @i]%%
Saída:
Cidade: São Paulo
Cidade: Rio de Janeiro
Cidade: Belo Horizonte
Cidade: Curitiba
Exemplo avançado
Cenário real de régua de relacionamento: um campo na Data Extension armazena os nomes dos produtos comprados pelo cliente, separados por pipe (|). Você quer listar esses produtos no e-mail de pós-venda da MegaStore, formatando cada nome com a primeira letra maiúscula:
%%[
VAR @produtos, @rowset, @totalProdutos, @i, @nomeProduto
SET @produtos = "camiseta básica|tênis esportivo|mochila urbana|boné aba reta"
SET @rowset = BuildRowsetFromString(@produtos, "|")
SET @totalProdutos = RowCount(@rowset)
]%%
Olá, João Silva! Aqui está o resumo da sua compra na MegaStore:<br><br>
%%[
FOR @i = 1 TO @totalProdutos DO
SET @nomeProduto = Field(Row(@rowset, @i), 1)
SET @nomeProduto = ProperCase(@nomeProduto)
]%%
%%=v(@i)=%%. %%=v(@nomeProduto)=%%<br>
%%[NEXT @i]%%
<br>Total de itens: %%=v(@totalProdutos)=%%
Saída:
Olá, João Silva! Aqui está o resumo da sua compra na MegaStore:
1. Camiseta Básica
2. Tênis Esportivo
3. Mochila Urbana
4. Boné Aba Reta
Total de itens: 4
Observações
⚠️ Atenção: A coluna do rowset gerado por
BuildRowsetFromStringnão possui nome atribuído. Por isso, ao usar a função Field, você deve referenciar a coluna pelo número ordinal1- e não por um nome de campo.
💡 Dica: Essa função é a sua melhor amiga quando um campo de Data Extension armazena múltiplos valores concatenados. Em vez de fazer manipulações complexas com Substring e IndexOf, basta usar
BuildRowsetFromStringe iterar com umFORsimples.
💡 Dica: Combine com RowCount para saber quantos itens a string continha e com Row + Field para acessar cada valor individualmente.
Funções relacionadas
- BuildRowsetFromJson - cria rowset a partir de JSON
- BuildRowsetFromXml - cria rowset a partir de XML
- Row - acessa uma linha específica do rowset
- RowCount - conta o total de linhas do rowset
- Field - extrai o valor de uma coluna da linha