我链接到一个 Proficy Historian,它允许在列名中使用句点。因为数据是以非 DBMS 格式存储的,所以我不能openquery
用来获取数据,因为表没有设置模式。所以我必须使用四部分名称语法来获取数据。这个例子有效:
SELECT * FROM iHist...[SELECT * FROM ihTrend]
但这会因“。”附近的语法不正确而失败。
SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07][0].F_CV.Value] FROM ihTrend]
SERVER.pid_astatus[07][0].F_CV.Value
列的名称在哪里
由于关键字“from”附近的语法不正确,这也会失败。
SELECT * FROM
iHist...[SELECT [SERVER.pid_astatus[[07]][[0]].F_CV.Value] from ihTrend]`
关于如何使 SQL Server 将此视为列的任何想法?
编辑:
Martins 建议使用右括号来转义括号仅在 sql 调用之外起作用
SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] FROM iHist...[SELECT * FROM ihTrend]
但是,它在关键字“from”附近的不正确语法中不起作用。
SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] FROM ihTrend]
编辑
SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value]] FROM ihTrend]
我不得不逃离列逃生:)