无法在SQLWorkbenchJ的Teradata中使用CONCAT

时间:2018-05-21 16:34:20

标签: sql teradata string-concatenation

我有一个脚本,以前从Teradata SQL Assistant运行得很好。我无法从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中运行该脚本。

请帮忙吗?

1 个答案:

答案 0 :(得分:3)

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

只需切换到标准SQL ||

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