NAME_CONST()¶
NAME_CONST(name, value) 返回具有指定列名的给定值,主要用于复制场景和构造特定列名的结果集。名称参数必须为常量字符串字面量,值参数必须为常量表达式。
函数说明¶
NAME_CONST(name, value) 返回 value 参数的值,并将列名指定为 name。该函数通常用于复制场景的内部使用,复制从节点需要重构具有特定列名的结果集。
name参数必须为常量字符串字面量或数字字面量。不支持表达式、列引用和NULL作为名称。value参数必须为常量值:支持整数、字符串、DECIMAL、浮点数以及NULL。不支持表达式、函数调用(如NOW()、ABS())以及CAST()调用作为值。该函数可在子查询中使用,并可作为列别名来源。
语法¶
> NAME_CONST(name, value)
参数说明¶
参数 |
说明 |
|---|---|
name |
必要参数。指定结果列名的常量字符串字面量或数字字面量。 |
value |
必要参数。要返回的常量值(整数、字符串、DECIMAL、浮点数或 NULL)。不支持表达式和函数调用。 |
示例¶
DROP DATABASE IF EXISTS test_name_const;
CREATE DATABASE test_name_const;
USE test_name_const;
-- 基本用法(整数值)
SELECT NAME_CONST('myname', 14);
-- 字符串值
SELECT NAME_CONST('str_name', 'abc');
-- NULL 值
SELECT NAME_CONST('null_name', NULL);
-- DECIMAL 值
SELECT NAME_CONST('decimal_name', 12.34);
-- 负数 DECIMAL
SELECT NAME_CONST('neg_decimal_name', -12.34);
-- 科学计数法浮点数
SELECT NAME_CONST('sci_float_name', 1.5e0);
-- 作为列别名
SELECT NAME_CONST('myname', 14) AS alias_name;
-- 在子查询中使用
SELECT t.myname FROM (SELECT NAME_CONST('myname', 42)) t;
-- 子查询中使用多个 NAME_CONST 列
SELECT * FROM (SELECT NAME_CONST('v', 'hello'), NAME_CONST('n', 99)) sub;
-- 带排序规则的字符串值
SELECT NAME_CONST('collate_str_name', _utf8mb4'test' COLLATE utf8mb4_unicode_ci);
DROP DATABASE test_name_const;
注意事项¶
在 MatrixOne 中,
name参数必须为常量字面量。与 MySQL 不同(MySQL 在某些上下文中可能会折叠表达式),MatrixOne 要求显式的常量字符串或数字字面量。value参数同样必须为常量。不支持ABS(-1)等表达式、NOW()等函数调用以及CAST(14 AS SIGNED)等类型转换,这些用法会产生错误。该函数主要用于复制场景的内部使用。大多数应用层查询无需直接使用。
NAME_CONST()可在子查询中用于控制派生表的列命名。