使用SQLPro for MSSQL获取COLUMN_NAME、DATA_TYPE遇Msg207报错求助
解决SQL查询列名和数据类型时的Invalid Column Name错误
哦,我明白问题出在哪了——你想要获取目标表的列名和对应数据类型,但你写的查询是直接从表dbo.[CORDELACIUTAT Resource Time Registr_]里选择COLUMN_NAME和DATA_TYPE,可这两个字段根本不在这个表里面呀!这就是为什么会抛出Invalid column name错误的原因。
要获取表的结构信息(列名、数据类型等),你需要查询SQL Server的系统元数据视图,而不是直接查询目标表本身。这里给你两种常用的解决方案:
方法1:使用INFORMATION_SCHEMA.COLUMNS(标准兼容方式)
这是ANSI标准的系统视图,在大多数关系型数据库中都适用,写法更简洁:
SELECT COLUMN_NAME, DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME = 'CORDELACIUTAT Resource Time Registr_' AND TABLE_SCHEMA = 'dbo';
方法2:使用SQL Server专属系统视图
如果你需要更详细的元数据信息,可以结合sys.columns、sys.types等系统视图来查询:
SELECT c.name AS COLUMN_NAME, t.name AS DATA_TYPE FROM sys.columns c JOIN sys.types t ON c.system_type_id = t.system_type_id JOIN sys.tables tbl ON c.object_id = tbl.object_id JOIN sys.schemas sch ON tbl.schema_id = sch.schema_id WHERE sch.name = 'dbo' AND tbl.name = 'CORDELACIUTAT Resource Time Registr_';
这两种方式都是从SQL Server存储的表结构元数据中读取信息,就能正确返回你需要的列名和数据类型啦。
内容的提问来源于stack exchange,提问作者en Peris
相关产品推荐
相关产品推荐

