1

シンプルCONCATにしようとすると、構文エラーが発生します。接続には独自のODBCドライバーが使用されていますが、これが問題であると確信していますが、自分の側からできることがあるかどうかを知りたい. 以下は、私が最初に試したクエリです。

SELECT CONCAT('DF', '01', ServiceCode) AS RecordID
FROM ServiceCodes

ただし、これは の近く, ServiceCodeで構文エラーをスローし、他の情報はありません。だから私は試しました:

SELECT 'DF' + '01' + ServiceCode AS RecordID
FROM ServiceCodes

しかし、これはterm_expr type not supportedドライバーからの特定のエラーであると思われるエラーを返します。

それで、私は試しました:

SELECT CONCAT(CONCAT('DF', '01'), ServiceCode) AS RecordID
FROM ServiceCodes

これはうまくいったようです!のような文字列を返しますDF01MOT。これはすべてのサーバーで機能するため、クエリを生成するフィールドを追加しました。

SELECT CONCAT(CONCAT('DF', '01'), ServiceCode) AS RecordID, 'DF' AS Environment 
FROM ServiceCodes

1つのサーバーを除いて、これも機能しているようです。この 1 つのサーバーで上記のクエリを実行すると、 のDF0DFMO代わりに が返されますDF01MOT。最後の 2 文字は に応じて各行で変更されますServiceCode。さらにフィールドを追加すると、次のように変更されます。

SELECT CONCAT(CONCAT('DF', '01'), ServiceCode) AS RecordID, 'DF' AS Environment, '01' AS SO
FROM ServiceCodes

DF0DF01これは、すべての行でこのフィールドを返します。

では、なぜこれが起こるのでしょうか?なぜ1つのサーバーにしかないのですか? ドライバーはすべてのサーバーで同じですが、これはドライバーの問題ですか? それを回避するにはどうすればよいですか?

編集: 混乱を避けるために、タイトルとタグを変更しました。これは実際には、SQL Server Enterprise Manager の DTS パッケージを使用して、サード パーティが提供するカスタム DBMS にアクセスしています。第三者に連絡することが唯一の選択肢だと思います。

4

1 に答える 1

2

あなたのコメントを見て、SQL Server タグは実際には少し誤解を招く可能性があります。ドライバーを使用してベンダー DB で実行しています。明らかに、彼らの DB はCONCAT、より多くの引数を取ることができる SQL Server 2012 関数ではなく、2 つの引数のみを取る関数をサポートしています。それはあなたの最初の問題を説明しています。

下の方に表示されているその他の結果については、ベンダーに問い合わせる必要があります。DTS に使用している SQL Server のバージョンは、ここでは関係ありません。

于 2013-01-17T15:55:25.317 に答える