You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置变量存储小写表名,调用时为何被转为大写?

原因说明

  • 你所用的数据库(典型如Snowflake、Oracle)默认对未加双引号的标识符采用大小写不敏感匹配规则,会自动将标识符转换为大写后再和系统内存储的对象名做匹配
  • 虽然你的变量中存储的确实是小写的tab_name,但当变量被作为表名标识符传入table()函数时,会触发上述标识符转换逻辑,被自动转为大写的TAB_NAME,如果你的表是当初用双引号包裹创建的小写名,自然会匹配失败报错。

解决方案

方案1:变量赋值时直接包裹双引号

设置变量时就给表名套上双引号,强制数据库识别为大小写敏感的标识符:

Set TGT_TABLE = '"tab_name"';
-- 后续查询直接正常调用即可
select * from table($TGT_TABLE);

方案2:查询时动态拼接双引号

如果不想修改原有变量赋值逻辑,可在查询时通过字符串拼接给变量值套双引号,再用标识符函数转换:

-- 原有变量赋值不变
Set TGT_TABLE = 'tab_name';
-- 查询时处理大小写
select * from identifier('"' || $TGT_TABLE || '"');

方案3:统一对象名大小写规范

如果没有业务强制要求小写表名,后续创建表时不要使用双引号包裹表名,让表名默认以大写形式存储在系统中,就不会再出现大小写不匹配的问题。


内容的提问来源于stack exchange,提问作者OUMOUSS_ELMEHDI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:15:03