gpt4 book ai didi

sql-server - 将 OPENQUERY 与链接服务器结合使用的 WHERE 子句

转载 作者:行者123 更新时间:2023-12-02 23:06:26 25 4
gpt4 key购买 nike

我通过 ODBC 连接 MS SQL Server Express 2012 数据库。

我的查询:

Select * from openquery(test,'SELECT * FROM Versuchsanlage_DB WHERE value =27')

SQL QUERY

但是这个查询

 Select * from openquery(test,
'SELECT * FROM Versuchsanlage_DB
WHERE identifier = AGENT.OBJECTS.Versuchsanlage.Variable_1_Byte')

或者

Select * from openquery(test,
'SELECT * FROM Versuchsanlage_DB
WHERE identifier = Variable_1_Byte')

不起作用。为什么?

最佳答案

您正在 identifier 中搜索字符串值柱子。字符串必须用引号引起来。由于 select 语句被传递到 OPENQUERY作为字符串,该字符串内的引号必须转义:

Select * from openquery(test,
'SELECT * FROM Versuchsanlage_DB
WHERE identifier = ''AGENT.OBJECTS.Versuchsanlage.Variable_1_Byte''')

或者

Select * from openquery(test,
"SELECT * FROM Versuchsanlage_DB
WHERE identifier = 'AGENT.OBJECTS.Versuchsanlage.Variable_1_Byte'")

这些查询在功能上是相同的,一个仅使用所有单引号,而另一个则使用双引号。选择您认为更容易阅读的内容。

或者您可以删除 OPENQUERY并使用EXECUTE...AT参数化语法(这需要为链接服务器启用 RPC):

EXECUTE('SELECT * FROM Versuchsanlage_DB WHERE identifier = ?',
'AGENT.OBJECTS.Versuchsanlage.Variable_1_Byte') AT [test];

关于sql-server - 将 OPENQUERY 与链接服务器结合使用的 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20545789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com