Compartilhar via


VECTOR_NORM (Transact-SQL) (versão prévia)

Aplica-se a: Banco de Dados SQL do Azure

Observação

Esse tipo de dados está em versão prévia e está sujeito a alterações. Não deixe de ler os termos de uso da versão prévia no documento SLA (Contratos de Nível de Serviço) para serviços online.

A função VECTOR_NORM recebe um vetor como entrada e retorna a norma do vetor (que é uma medida de seu comprimento ou magnitude) em um determinado tipo de norma

Por exemplo, se você deseja calcular a norma euclidiana (que é o tipo de norma mais comum), você pode usar:

SELECT VECTOR_NORM ( vector_column, 'norm2' )
FROM ...

Sintaxe

Convenções de sintaxe de Transact-SQL

VECTOR_NORM ( vector_column, norm_type )

Argumentos

vector_column

Uma expressão que é avaliada como um vetor. Essa coluna deve ser do novo tipo de dados vetoriais

norm_type

Uma string com o nome do tipo de norma a ser usado para calcular a norma do vetor fornecido. Os seguintes tipos de norma são suportados:

  • norm1 - A norma 1, que é a soma dos valores absolutos dos componentes vetoriais.
  • norm2 - A norma 2, também conhecida como norma euclidiana, que é a raiz quadrada da soma dos quadrados dos componentes vetoriais.
  • norminf - A norma do infinito, que é o máximo dos valores absolutos dos componentes vetoriais.

Valor retornado

A função retorna um valor flutuante que representa a norma do vetor usando o tipo de norma especificado.

Um erro será retornado se norm_type não for um tipo de norma válido e se o vector_column não for do tipo vetor.

Exemplos

Exemplo 1

O exemplo a seguir cria um vetor com três dimensões de uma cadeia de caracteres com uma matriz JSON.

DECLARE @v VECTOR(3) = '[1, 2, 3]';

SELECT 
    vector_norm(@v, 'norm2') AS norm2,
    vector_norm(@v, 'norm1') AS norm1,
    vector_norm(@v, 'norminf') AS norminf;

Os valores de retorno esperados seriam:

norm2 norm1 norminf
3.7416573867739413 6,0 3.0

Exemplo 2

O exemplo a seguir calcula a norma de cada vetor em uma tabela.

CREATE TABLE dbo.vectors
(
  ID INT PRIMARY KEY,
  v VECTOR(3) NOT NULL
);

INSERT INTO dbo.vectors (ID, v) VALUES 
(1, '[0.1, -2, 42]'),
(2, '[2, 0.1, -42]');

SELECT 
  ID, 
  VECTOR_NORM(v, 'norm2') AS norm 
FROM 
  dbo.vectors;