一尘不染

在列名称中选择带句点的列SQL Server

sql

我链接到允许在列名称中使用句点的ProficyHistorian。因为数据是以非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]

我不得不逃脱列逃脱:)


阅读 173

收藏
2021-05-23

共1个答案

一尘不染

您只需要逃避这些 ]

[pid_astatus[07]][0]].F_CV.Value]

这对我有用

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

SELECT [pid_astatus[07]][0]].F_CV.Value]
FROM #t
2021-05-23