【问题标题】:OpenQuery to a linked server that uses reserved wordsOpenQuery 到使用保留字的链接服务器
【发布时间】:2021-12-23 04:15:27
【问题描述】:

这是一个让我烦恼的问题,但我也希望有人能提供解决方案。我们有一个第三方供应商/应用程序来处理我们交易的一个方面。我正在使用 OpenQuery 尝试通过链接服务器查询此表。这是问题(也是令人沮丧的根源)——我试图查询的表有超过 1.1 亿条记录,并使用保留字作为列名(日期、时间)。具体来说,我正在尝试根据日期查询一个子集,这样我就不必每次都尝试拉整个表,然后在拉完整个内容后将其子集,但尝试使用引用日期列的 where 子句,例如例如,由于保留字而引起问题。

有人有解决办法吗?提前致谢。

【问题讨论】:

  • 如果它链接到 MS SQL Server,您有 2 个选项来转义关键字:使用小括号或双引号。例如,...来自表 T,其中 T.[date] 在 value1 和 value2 之间

标签: tsql openquery reserved-words


【解决方案1】:

T-SQL 使用方括号 [] 将保留字和带有非法字符(如破折号或空格)的名称括起来。

如果需要,您可以为列名设置别名以使其更容易。如果您不确定,可以安全地在许多附加词周围使用方括号。

SELECT t.[Date] AS ItemDate, 
       t.[Time],
       t.[Event] AS Evt 
FROM dbo.ImportTable t
WHERE ItemDate > '01-01-2020'
AND [t].[Time] IS NOT NULL

提供示例查询以显示语法的灵活性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多