Partager via


VECTOR_NORM (Transact-SQL) (préversion)

S’applique à : Azure SQL Database

Remarque

Ce type de données est en préversion et peut être modifié. Veillez à lire les termes d’utilisation de la préversion dans le document Contrats de niveau de service (SLA) pour Services en ligne.

La fonction VECTOR_NORM prend un vecteur comme entrée et retourne la norme du vecteur (qui est une mesure de sa longueur ou de sa magnitude) dans un type de norme donné

Par exemple, si vous souhaitez calculer la norme Euclide (qui est le type de norme le plus courant), vous pouvez utiliser :

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

Syntaxe

Conventions de la syntaxe Transact-SQL

VECTOR_NORM ( vector_column, norm_type )

Arguments

vector_column

Expression qui prend la valeur d’un vecteur. Cette colonne doit être du nouveau type de données vectorielles

norm_type

Chaîne portant le nom du type de norme à utiliser pour calculer la norme du vecteur donné. Les types de norme suivants sont pris en charge :

  • norm1 - La norme 1, qui est la somme des valeurs absolues des composants vectoriels.
  • norm2 - La norme 2, également appelée norme euclide, qui est la racine carrée de la somme des carrés des composants vectoriels.
  • norminf - Norme d’infini, qui est la valeur maximale des valeurs absolues des composants vectoriels.

Valeur retournée

La fonction retourne une valeur float qui représente la norme du vecteur à l’aide du type de norme spécifié.

Une erreur est retournée si norm_type n’est pas un type de norme valide et si le vector_column n’est pas du type de vecteur .

Exemples

Exemple 1

L’exemple suivant crée un vecteur avec trois dimensions à partir d’une chaîne avec un tableau 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;

Les valeurs de retour attendues sont les suivantes :

norm2 norm1 norminf
3.7416573867739413 6.0 3.0

Exemple 2

L’exemple suivant calcule la norme de chaque vecteur dans une table.

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;