0

我有一个 OpenQuery(在 SQL2005 中用于对遗留数据库运行查询)。我正在构建要运行的字符串,以便返回最近 6 个月的数据。

我遇到的问题是'||' 连接。

这适用于遗留系统:

SELECT
    EVENT_DATE || ' ' || EVENT_TIME as EVENTDateTime
FROM
     EVENT

这通过链接的 SQL Server 在 SQL2005 中工作:

Declare @Query nvarchar(MAX)
Set @Query = N'
    SELECT
        *
    FROM
        OPENQUERY(PATCOMLIVE,
             ''SELECT
                *
            FROM
                 root.ESDB_EVENT as EV
            ''
            ) as OpenQ';

exec sp_executesql @Query

这不起作用:

Declare @Query nvarchar(MAX)
Set @Query = N'
    SELECT
        *
    FROM
        OPENQUERY(PATCOMLIVE,
             ''SELECT
                EVENT_DATE || '' '' || EVENT_TIME
            FROM
                 root.ESDB_EVENT as EV
            ''
            ) as OpenQ';

exec sp_executesql @Query

这也不是:

                EVENT_DATE '|'| '' '' '|'| EVENT_TIME

我知道我错过了一些简单的东西......但是|| 将字符串连接在一起会使事情变得混乱,尽管它确实可以在遗留系统上运行。

4

1 回答 1

3

你是对的,它不起作用,因为它没有向 发送完整的字符串OPENQUERY,你可以尝试两件事。首先,连接 right ',应该是这样的:

Set @Query = N'
    SELECT
        *
    FROM
        OPENQUERY(PATCOMLIVE,
             ''SELECT
                EVENT_DATE || '''' '''' || EVENT_TIME
            FROM
                 root.ESDB_EVENT as EV
            ''
            ) as OpenQ';

或者您可以尝试在 SQL 中连接这些列,如下所示:

Set @Query = N'
    SELECT
        *, EVENT_DATE + '' '' + EVENT_TIME
    FROM
        OPENQUERY(PATCOMLIVE,
             ''SELECT
                *
            FROM
                 root.ESDB_EVENT as EV
            ''
            ) as OpenQ';
于 2011-01-19T16:30:02.947 回答