openquery中的字符串连接

时间:2015-01-28 12:42:58

标签: 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''')

错误消息:

  

消息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

2 个答案:

答案 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

我认为额外的单引号'是因为您正在逃避它们。