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

为何OBJECT_ID()对其他对象有效,对视图却返回NULL?

解决OBJECT_ID获取带特殊字符视图ID返回NULL的问题

问题原因

你的视图名称包含**连字符(-)和点(.)**这类SQL Server特殊字符,直接传入OBJECT_ID函数时,函数会错误解析对象名(比如把点当成对象层级的分隔符),导致无法匹配到实际存在的视图,最终返回NULL。

解决方法

1. 使用方括号包裹对象名

用[]将完整视图名包裹,强制OBJECT_ID函数识别整个字符串为对象名:

-- 直接获取视图ID
SELECT OBJECT_ID('[vw202004-divvy-tripdata.csv]');

-- 验证视图存在性的查询
SELECT TOP 1 1 FROM sys.views WHERE object_id = OBJECT_ID('[vw202004-divvy-tripdata.csv]');

-- 修改你的列表查询,批量获取ID
SELECT 
  name
  , type
  , object_id
  , [id] = OBJECT_ID('[' + name + ']', type)
FROM sys.views;

如果需要指定数据库和架构,格式为:

SELECT OBJECT_ID('[YourDatabase].[YourSchema].[vw202004-divvy-tripdata.csv]');

2. 使用双引号包裹对象名(需开启QUOTED_IDENTIFIER)

如果你的会话开启了QUOTED_IDENTIFIER设置(默认开启),也可以用双引号包裹对象名:

SELECT OBJECT_ID("vw202004-divvy-tripdata.csv");

额外建议

后续创建数据库对象时,尽量避免在名称中使用连字符、点这类特殊字符,改用下划线(_)替代,也不要添加.csv这类文件后缀,从根源减少对象名解析问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 14:20:25