当尝试一个简单的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 台服务器上。在这台服务器上运行上述查询时,它现在将返回DF0DFMO
而不是DF01MOT
,每行中的最后 2 个字符根据 更改ServiceCode
,添加更多字段会再次更改,例如:
SELECT CONCAT(CONCAT('DF', '01'), ServiceCode) AS RecordID, 'DF' AS Environment, '01' AS SO
FROM ServiceCodes
这将返回DF0DF01
所有行中的该字段。
那么为什么会发生这种情况呢?为什么它只在一台服务器上?所有服务器上的驱动程序都相同,但这是驱动程序的问题吗?我能做些什么来绕过它?
编辑:为避免混淆,我修改了标题和标签。这实际上是通过 SQL Server 企业管理器中的 DTS 包访问第三方提供的自定义 DBMS。我相信联系第三方是唯一的选择。