VECTOR_SORT

Sorts the elements in the vector expression in ascending or descending order. If no order specified, ascending order is the default.

Syntax

VECTOR_SORT(vector_expression [,'asc'|'desc'])

Arguments

  • vector_expression: An expression that evaluates to a vector. The vector must be encoded as a blob containing packed single-precision or double-precision floating-point numbers in little-endian byte order.

  • asc or desc: The sort order in which the vector will be returned. Asc means ascending order. Desc means descending order. Asc is the default.

Return Type

A blob containing packed single-precision floating-point numbers in little-endian byte order.

Remarks

A vector can be of any length, but the input blob length must be divisible by the packed vector element size (1, 2, 4 or 8 bytes, depending on the vector element).

You can specify the datatype of the vector elements in which this operation is performed on the vector by adding a suffix to the function. Omitting the suffix from the function is equivalent to suffixing it with _F32. All operations are done using the specified datatype. The following table lists the suffixes and their datatype.

Suffix

Datatype

_I8

8-bit signed integer

_I16

16-bit signed integer

_I32

32-bit signed integer

_I64

64-bit signed integer

_F32

32-bit floating-point number (IEEE standard format)

_F64

64-bit floating-point number (IEEE standard format)

Examples

CREATE TABLE t (x BLOB);
INSERT INTO t VALUES (JSON_ARRAY_PACK('[4,3,1,5,2]'));
SELECT JSON_ARRAY_UNPACK (VECTOR_SORT(x)) AS x from t;  
+-------------+
| x           |
+-------------+
| [1,2,3,4,5] |
+-------------+

*****

SELECT JSON_ARRAY_UNPACK (VECTOR_SORT(x,'asc')) AS x from t; 
+-------------+
| x           |
+-------------+
| [1,2,3,4,5] |
+-------------+ 

*****

SELECT JSON_ARRAY_UNPACK (VECTOR_SORT(x,'desc')) AS x from t;
+-------------+
| x           |
+-------------+
| [5,4,3,2,1] |
+-------------+