共用方式為


VECTOR_NORM (Transact-SQL) (預覽)

適用於:Azure SQL 資料庫

注意

此數據類型處於預覽狀態,而且可能會變更。 請務必閱讀在線服務服務服務等級協定 (SLA) 檔中的預覽使用規定。

函式 VECTOR_NORM 會採用向量做為輸入,並傳回向量的常態(這是其長度或大小量值)在指定的 常態類型中

例如,如果您想要計算 Euclidean 常態(這是最常見的常態類型),您可以使用:

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

Syntax

Transact-SQL 語法慣例

VECTOR_NORM ( vector_column, norm_type )

引數

vector_column

評估為向量的表達式。 此數據行必須是新的 向量 數據類型

norm_type

字串,其名稱為 norm 型別,用來計算指定向量的常態。 支援下列常態類型:

  • norm1 - 1-norm,這是向量元件的絕對值總和。
  • norm2 - 2-norm,也稱為 Euclidean Norm,這是向量元件平方總和的平方根。
  • norminf - 無限常態,這是向量元件絕對值的最大值。

傳回值

函式會 傳回 float 值,這個值代表使用指定之 norm 型別的向量常態。

如果norm_type不是有效的常態類型,而且vector_column不是向量類型,則會傳回錯誤。

範例

範例 1

下列範例會從具有 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;

預期的傳回值為:

norm2 norm1 norminf
3.7416573867739413 6.0 3.0

範例 2

下列範例會計算數據表中每個向量的常態。

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;