Sql openquery中的字符串连接

Sql openquery中的字符串连接,sql,oracle,oracle11g,string-concatenation,Sql,Oracle,Oracle11g,String Concatenation,我将Oracle Server链接到我的SQLServer。在构建连接查询时,我遇到了问题。请检查下面的代码 select * from openquery(OracleConnection,'select CONCAT(CUST_ADD1,'','',CUST_ADD2,'','',CUST_ADD3) from TDSPARTY where CUST_NAME=''DR GEORGE ABRAHAM''') 错误消息: Msg 7357,16级,状态2,第1行无法处理对象“选择 来自TDS

我将Oracle Server链接到我的SQLServer。在构建连接查询时,我遇到了问题。请检查下面的代码

select * from openquery(OracleConnection,'select CONCAT(CUST_ADD1,'','',CUST_ADD2,'','',CUST_ADD3) from TDSPARTY where CUST_NAME=''DR GEORGE ABRAHAM''')
错误消息:

Msg 7357,16级,状态2,第1行无法处理对象“选择 来自TDSPARTY的CONCAT(客户地址1、“”、客户地址2、“”、客户地址3),其中 客户名称为“乔治·亚伯拉罕博士”。的OLE DB提供程序“MSDASQL” 链接服务器“OracleConnection”表示对象 没有列,或者当前用户没有该列的权限 反对


所需输出:
CUST\u ADD1、CUST\u ADD2、CUST\u ADD3
只需使用
串联运算符
||

差不多-

从…中选择“客户添加1”、“客户添加2”、“客户添加3”

更多信息


CONCAT函数允许您将两个字符串连接在一起。对于两个以上的字符串,可以使用嵌套在一起的MULTIPLEconcat。但是,为了保持简单,可以使用如上所示的连接运算符。

Oracle版本的
CONCAT()
函数只允许两个参数。因此,您可以使用嵌套的
CONCAT()
s:

或者您可以使用连接运算符
|
(这实际上是在ANSI SQL标准中定义的,尽管SQL Server不遵守此标准):


我假设额外的单引号是因为您正在转义它们。

我不认为OP试图转义单引号。他正在努力连接三列值她正在转义它们b/c查询本身作为字符串传递给
openquery()
函数。为什么要包含双引号?您只需将列值与它们之间的逗号连接起来。我遗漏了什么吗?我加上了双引号,这样他就可以把我写的东西放进他的函数中。不。您不能仅用一个引号来转义singke引号。你必须用单引号把它括起来。
CONCAT(CONCAT(CONCAT(CONCAT(CUST_ADD1,'',''),CUST_ADD2),'',''),CUST_ADD3)
CUST_ADD1||'',''||CUST_ADD2||'',''||CUST_ADD3