- Categorias:
Funções de dados semiestruturados e estruturados (Ordem superior)
TRANSFORM¶
Transforma uma matriz com base na lógica de uma expressão lambda.
Sintaxe¶
Argumentos¶
arrayA matriz que contém os elementos a serem transformados. A matriz pode ser semiestruturada ou estruturada.
lambda_expressionUma expressão lambda que define a lógica de transformação em cada elemento da matriz.
A expressão lambda deve ter apenas um argumento especificado na seguinte sintaxe:
Retornos¶
O tipo de retorno desta função é uma matriz semiestruturada ou estruturada do resultado da expressão lambda.
Se qualquer dos argumentos for NULL, a função retorna NULL sem relatar um erro.
Notas de uso¶
Quando o tipo de dados para o argumento lambda é especificado explicitamente, o elemento da matriz é forçado para o tipo especificado antes da invocação da lambda. Para obter informações sobre coerção, consulte Conversão do tipo de dados.
Quando não há nenhum tipo de dados especificado para o argumento lambda, seu tipo de dados é derivado da matriz de entrada da seguinte forma:
Se a matriz de entrada for semiestruturada, o tipo de dados do argumento lambda será VARIANT.
Se a matriz de entrada for estruturada, o tipo de dados do argumento lambda será o tipo de dados do elemento da matriz.
Para entrada de matriz semiestruturada, uma matriz semiestruturada é retornada. Para entrada de matriz estruturada, uma matriz estruturada do tipo de resultado da expressão lambda é retornada.
Exemplos¶
Os exemplos a seguir usam a função TRANSFORM.
Multiplicação de cada elemento em uma matriz por um valor¶
Use a função TRANSFORM para multiplicar cada elemento de uma matriz por dois:
Este exemplo é o mesmo que o exemplo anterior, mas especifica uma matriz estruturada do tipo INT:
Retorno de valores em uma matriz com texto adicionado¶
Use a função TRANSFORM para retornar o valor de cada objeto em uma matriz e adicionar texto a cada um:
Transformação de elementos de matriz em dados de tabela¶
Suponha que você tenha uma tabela chamada orders com as colunas order_id, order_date e order_detail. A coluna order_detail é uma matriz dos itens de linha, sua quantidade de compra e subtotal. A tabela contém duas linhas de dados. A seguinte instrução SQL cria esta tabela e insere as linhas:
Use a função TRANSFORM para adicionar um elemento unit_price para cada matriz na tabela orders:
Use a função TRANSFORM junto com a função OBJECT_DELETE na lógica da expressão lambda para excluir o elemento quantity em cada matriz da tabela orders:
Faça referência a uma coluna de tabela em uma expressão lambda para transformar elementos de matriz em dados de tabela¶
Criar uma tabela com uma coluna do tipo ARRAY e outra coluna do tipo INT:
Use a função TRANSFORM para adicionar o valor em col2 ao valor de cada elemento da matriz em cada linha: