我有一个postgresql
into的链接服务器连接sql server
。我可以在 Sql Server 中运行它 Select * from OpenQuery(LinkedServer,'Select * from alphadawg')
并返回所有结果,但是第二次我尝试添加任何函数时我开始出错。例如,如果我想要TRIM()
一个字段的尾随空格
Select * from OPENQUERY(LinkedServer,
'Select TRIM(trailing ' ' from ad.userid) As "User ID"
FROM alphadawg ad')
我得到一个错误
消息 102,级别 15,状态 1,第 5 行
不正确的语法 ' from ad.userid) 作为“用户 ID”
好的,也许问题是我试图在 Sql Server 中执行 postgresql,所以我将语法更改为
Select * from OPENQUERY(LinkedServer,
'Select RTRIM(ad.userid) As "User ID"
FROM alphadawg ad')
但这随后引发了一个错误:
链接服务器“LinkedServer”的 OLE DB 提供程序“MSDASQL”返回消息“不支持请求的转换。”。
如何TRIM()
在 postgresql 和 SQL Server 之间的链接服务器连接中使用该函数?
引号必须在
OPENQUERY
参数中转义。该
TRIM
函数的返回类型是text
,因此您应该将其转换回 varchar。或者
我没有测试环境,但如果以下内容不起作用,我会感到惊讶......
OPENQUERY 在远程服务器上执行给定的查询以检索请求的数据。因此,如果您愿意,您可以使用 SQL Server,也可以使用 PostgreSQL。
要在 PostgreSQL 上修剪,您的语法不正确。它应该是。
在SQL Server trim,TRIM分为LTRIM(Left Trim)和RTRIM(Right Trim)。所以你应该使用下面的查询
谢谢