在列名SQL Server中选择具有句点的列

efb*_*son 4 sql sql-server linked-server historian

我链接到Proficy Historian,它允许列名称中包含句点.因为数据以非DBMS格式存储,所以我不能openquery用来获取数据,因为表没有设置模式.所以我必须使用四部分名称语法来获取数据.这个例子有效:

SELECT * FROM iHist...[SELECT * FROM ihTrend]
Run Code Online (Sandbox Code Playgroud)

但是在'.'附近的语法不正确.

SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07][0].F_CV.Value] FROM ihTrend]
Run Code Online (Sandbox Code Playgroud)

SERVER.pid_astatus[07][0].F_CV.Value列的名称在哪里

这也与关键字'from'附近的语法错误一致.

SELECT * FROM 
    iHist...[SELECT [SERVER.pid_astatus[[07]][[0]].F_CV.Value] from ihTrend]`
Run Code Online (Sandbox Code Playgroud)

关于如何让SQL Server将其视为列的任何想法?

编辑:

Martins建议右括号转义括号只能在sql调用的外部工作

SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] FROM iHist...[SELECT * FROM ihTrend] 
Run Code Online (Sandbox Code Playgroud)

但是它在关键字'from'附近的不正确语法中不起作用.

SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] FROM ihTrend]
Run Code Online (Sandbox Code Playgroud)

编辑

SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value]] FROM ihTrend] 
Run Code Online (Sandbox Code Playgroud)

我不得不逃脱列逃脱:)

Mar*_*ith 6

你只需要逃避这些 ]

[pid_astatus[07]][0]].F_CV.Value]
Run Code Online (Sandbox Code Playgroud)

这适合我

CREATE TABLE #t(
    [pid_astatus[07]][0]].F_CV.Value] int
) 

SELECT [pid_astatus[07]][0]].F_CV.Value]
FROM #t
Run Code Online (Sandbox Code Playgroud)