Выбор столбца с точкой в ​​имени столбца SQL Server - PullRequest
4 голосов
/ 20 июля 2010

Я связан с Proficy Historian, который допускает точки в именах столбцов. Поскольку данные хранятся в формате, отличном от СУБД, я не могу использовать 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 видеть это в виде столбца?

EDIT:

Предложение Мартинса о правильных скобках, чтобы избежать скобок, работает только на внешней стороне вызова 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]

EDIT

SELECT * FROM iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value]] FROM ihTrend] 

Я должен был сбежать из колонны, бежать:)

Ответы [ 2 ]

6 голосов
/ 20 июля 2010

Вам нужно только избежать этих ]

[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
4 голосов
/ 20 июля 2010

(отредактировано для отражения новых знаний, если вам нравится этот голос за ответ Мартина Смита!)

Побег ], удвоив их:

SELECT * FROM 
    iHist...[SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] from ihTrend]

Исходя из вашего комментария, попробуйте:

SELECT [SERVER.pid_astatus[07]][0]].F_CV.Value] FROM iHist...ihTrend
...