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() 可在子查询中用于控制派生表的列命名。