SCALAR_VECTOR_MUL
Multiplies each element in the vector blob with the specified scalar value and returns a single vector blob.
It is a scalar function.
Syntax
SCALAR_VECTOR_MUL(scalar_value, vector_expression)
Arguments
scalar_value
: A scalar value.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.
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 blob lengths must be divisible by 4 bytes (or 8 bytes, depending on the datatype specified).
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 |
---|---|
| 8-bit signed integer |
| 16-bit signed integer |
| 32-bit signed integer |
| 64-bit signed integer |
| 32-bit floating-point number (IEEE standard format) |
| 64-bit floating-point number (IEEE standard format) |
Examples
The following queries use the JSON_ARRAY_UNPACK()
function to view the output in JSON format.
Multiplying a Vector with a Scalar
The following example multiplies a vector blob with a scalar value.
SELECT JSON_ARRAY_UNPACK(SCALAR_VECTOR_MUL(10, JSON_ARRAY_PACK('[6.21,3.84,7.19]'))) "Result"; **** +------------------------------------+ | Result | +------------------------------------+ | [62.0999985,38.3999977,71.9000015] | +------------------------------------+
You can also view the vector blob in hexadecimal format using the HEX()
function.
SELECT HEX(SCALAR_VECTOR_MUL(10, JSON_ARRAY_PACK('[6.21,3.84,7.19]'))) "Result"; **** +--------------------------+ | Result | +--------------------------+ | 6666784299991942CDCC8F42 | +--------------------------+
Typecasting the Datatype Using Suffixes
To perform this operation on vectors specified in a format other than the default 32-bit floating point number, specify a suffix with the SCALAR_VECTOR_MUL()
function. For example,
SELECT JSON_ARRAY_UNPACK_I16(SCALAR_VECTOR_MUL_I16(10, JSON_ARRAY_PACK_I16('[6.21,3.84,7.19]'))); **** +-------------------------------------------------------------------------------------------+ | JSON_ARRAY_UNPACK_I16(SCALAR_VECTOR_MUL_I16(10, JSON_ARRAY_PACK_I16('[6.21,3.84,7.19]'))) | +-------------------------------------------------------------------------------------------+ | [60,40,70] | +-------------------------------------------------------------------------------------------+
In this query, the JSON_ARRAY_PACK()
converts the input values to 16-bit integers, hence the fractional values are lost.