无法在 SQLWorkbenchJ 的 Teradata 中使用 CONCAT

Can't use CONCAT in Teradata from SQLWorkbenchJ

我有一个用于 运行 来自 Teradata SQL 助手的脚本。我无法从 SQL Workbench/J 获得与 运行 完全相同的脚本。我已将问题隔离到一个特定的行。这是查询:

SELECT
    variable1 as name1,
    variable2 as name2,
    CONCAT(TRIM(variable3), ':', trim(variable4)) as name3
    variable4 as name4,
FROM
    table1
WHERE
    variable4 between '2017-01-01' AND '2017-01-31';

问题出在 CONCAT 行。如果我注释掉那一行,代码 运行 没问题。如果我保留该行,我会收到无用的消息:

[Teradata Database] [TeraJDBC 16.10.00.07] [Error 3706] [SQLState 42000] 
Syntax error: expected something between '(' and the 'TRIM' keyword. [SQL State=42000, 
DB Errorcode=3706]
1 statement failed.

我说没用,因为这听起来像是语法错误,但就 Teradata 而言,这不是语法错误。完全相同的代码 运行 在 Windows Teradata SQL Assistant 上运行良好。但是由于 OSX Teradata SQL Assistant 是一个垃圾箱火,我不得不尝试 运行 SQL Workbench J.

中的脚本

请帮忙?

Teradata 中没有 concat 函数 SQL,它是由 ODBC 驱动程序自动转换为有效语法的 ODBC 函数(有时)。但是SQLWorkbench用的JDBC不支持这个功能。

只需切换到标准 SQL ||:

TRIM(variable3) || ':' || trim(variable4)