Dela via


VECTOR_NORM (Transact-SQL)

Gäller för: SQL Server 2025 (17.x) Förhandsversion av Azure SQL DatabaseAzure SQL Managed InstanceSQL Database i Förhandsversion av Microsoft Fabric

Använd VECTOR_NORM för att ta en vektor som indata och returnera normen för vektorn (som är ett mått på dess längd eller storlek) i en viss normtyp.

Om du till exempel vill beräkna den euklidiska normen (som är den vanligaste normtypen) kan du använda:

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

Note

VECTOR_NORMär tillgängligt i Azure SQL Managed Instance med sql Server 2025- eller always-up-to-date update-principen.

Syntax

Transact-SQL syntaxkonventioner

VECTOR_NORM ( vector , norm_type )

Arguments

vector

Ett uttryck som utvärderas till vektordatatyp .

norm_type

En sträng med namnet på den normtyp som ska användas för att beräkna normen för den angivna vektorn. Följande normtyper stöds:

  • norm1 – 1-normen, som är summan av de absoluta värdena för vektorkomponenterna.
  • norm2 - 2-normen, även känd som Euclidean Norm, som är kvadratroten av summan av kvadraterna i vektorkomponenterna.
  • norminf – Oändlighetsnormen, som är maxvärdet för vektorkomponenternas absoluta värden.

Returvärde

Funktionen returnerar ett flyttalvärde som representerar normen för vektorn med den angivna normtypen.

Ett fel returneras om norm_type inte är en giltig normtyp och om vektorn inte är av vektordatatypen.

Examples

Exempel 1

I följande exempel skapas en vektor med tre dimensioner från en sträng med en JSON-matris.

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

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

Förväntade returvärden skulle vara:

norm2 norm1 norminf
3.7416573867739413 6.0 3.0

Exempel 2

I följande exempel beräknas normen för varje vektor i en tabell.

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;