Teradata LEFT() 函数问题

Teradata LEFT() function issue

我 运行 使用 SAS 针对 Teradata 进行以下查询,它工作正常

SELECT LEFT(first_name,7) 
FROM testTab 

但是,当我 运行 在 Sql Assistant 中执行相同的查询时,它会抛出错误:Expected something between keyword SELECT and keyword LEFT

在我的另一台计算机上,上面的代码 运行s 在 Sql Assistant 上。

那么,我的问题是,为什么 LEFT 功能有时有效,有时却无效?

有很多解决方法,但我想知道这个 LEFT 函数到底是怎么回事?

我不确定 SAS 版本如何 运行,因为 LEFT 不是 Teradata 中的函数。 LEFT 是 Teradata 中的关键字,因为 LEFT OUTER JOIN。也许 SAS 有某种 parser/rewrite 东西可以将其更改为正确的 Teradata 函数。

无论如何,要在 Teradata 中执行此操作,您可以执行以下操作:

 SELECT SUBSTRING(first_name FROM 1 FOR 7) FROM testtab

要解决,请转到配置 OBDC -> 选项 -> 检查 "Enable Legacy Parsing"

或者你可以在 SEL 中写 { fn FunctionName() };

例如选择 {fn 月(日期)};

解决方法: SELECT { fn LEFT(first_name,7) } FROM testTab;

注意:这需要 运行 来自 SQL 具有以下特殊设置的 ODBC 连接的助手:

在 SQL 助手中转到工具 --> "Define ODBC Data Source" --> << 单击所需的 Teradata DNS >> --> 配置 --> 选项 --> "Enable Legacy Parser"