我将Oracle Server链接到我的SQLServer。虽然构建串联查询我面临问题。请检查下面的代码。
select * from openquery(OracleConnection,'select CONCAT(CUST_ADD1,'','',CUST_ADD2,'','',CUST_ADD3) from TDSPARTY where CUST_NAME=''DR GEORGE ABRAHAM''')
错误消息:
消息7357,级别16,状态2,行1无法处理对象"选择 来自TDSPARTY的CONCAT(CUST_ADD1,'''',CUST_ADD2,'''',CUST_ADD3) CUST_NAME =' DR GEORGE ABRAHAM'"。 OLE DB提供程序" MSDASQL"对于 链接服务器" OracleConnection"表示该对象具有 没有列或当前用户没有权限 对象
需要输出:CUST_ADD1,CUST_ADD2,CUST_ADD3
答案 0 :(得分:1)
只需使用concatenation operator
||
之类的东西 -
select CUST_ADD1||','||CUST_ADD2||','||CUST_ADD3 from...
更多信息:
CONCAT 函数允许您将两个字符串连接在一起。对于两个以上的字符串,您可以使用 MULTIPLE 连接嵌套在一起。但是,为了简单起见,您可以使用如上所示的连接运算符。
答案 1 :(得分:0)
Oracle CONCAT()
函数的版本仅允许两个参数。因此,您可以使用嵌套的CONCAT()
s:
CONCAT(CONCAT(CONCAT(CONCAT(CUST_ADD1,'',''),CUST_ADD2),'',''),CUST_ADD3)
或者您可以使用连接运算符||
(实际上是在ANSI SQL标准中定义的,尽管SQL Server不符合此标准):
CUST_ADD1||'',''||CUST_ADD2||'',''||CUST_ADD3
我认为额外的单引号'
是因为您正在逃避它们。