ARRAY_CROSS_PRODUCT
描述
计算两个三维数值数组的叉积。
对于 lhs = [x1, x2, x3] 和 rhs = [y1, y2, y3],返回结果为:
lhs x rhs = [x2 * y3 - x3 * y2, x3 * y1 - x1 * y3, x1 * y2 - x2 * y1]
备注
Since 4.1.2
别名
cross_product
语法
array_cross_product(ARRAY<T> lhs, ARRAY<T> rhs)
参数
| 参数 | 说明 |
|---|---|
lhs | 第一个三维数值数组 |
rhs | 第二个三维数值数组 |
T 支持 FLOAT,以及元素类型为 TINYINT、SMALLINT、INT、BIGINT、LARGEINT 的整数数组。
返回值
返回 ARRAY<FLOAT>。
- 如果任一输入数组为
NULL,返回NULL。 - 如果输入数组内部存在
NULL元素,返回错误。 - 如果任一输入数组的元素个数不是 3,返回错误。
示例
SELECT array_cross_product([2.5, -3.0, 4.25], [-7.5, 0.5, 1.25]);
+--------------------------------------------------------------+
| array_cross_product([2.5, -3.0, 4.25], [-7.5, 0.5, 1.25]) |
+--------------------------------------------------------------+
| [-5.875, -35, -21.25] |
+--------------------------------------------------------------+
SELECT array_cross_product(CAST([-128, 0, 127] AS ARRAY<TINYINT>),
CAST([3, -5, 7] AS ARRAY<TINYINT>));
+---------------------------------------------------------------------------------------------------+
| array_cross_product(CAST([-128, 0, 127] AS ARRAY<TINYINT>), CAST([3, -5, 7] AS ARRAY<TINYINT>)) |
+---------------------------------------------------------------------------------------------------+
| [635, 1277, 640] |
+---------------------------------------------------------------------------------------------------+
SELECT array_cross_product(CAST(NULL AS ARRAY<FLOAT>), [4.0, 5.0, 6.0]);
+--------------------------------------------------------------------------+
| array_cross_product(CAST(NULL AS ARRAY<FLOAT>), [4.0, 5.0, 6.0]) |
+--------------------------------------------------------------------------+
| NULL |
+--------------------------------------------------------------------------+
SELECT array_cross_product([-11, NULL, 13], [17, -19, 23]);
ERROR 1105 (HY000): errCode = 2, detailMessage = function array_cross_product cannot have null