Teradata LEFT()函数问题

时间:2016-01-20 21:11:45

标签: teradata

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

SELECT LEFT(first_name,7) 
FROM testTab 

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

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

所以,我的问题是,为什么LEFT函数有时会起作用,有时它不起作用?

有很多变通方法,但我想知道这个LEFT函数到底发生了什么?

4 个答案:

答案 0 :(得分:4)

我不确定SAS版本是如何运行的,因为LEFT不是Teradata中的功能。由于LEFTLEFT OUTER JOIN是Teradata中的关键字。也许SAS有某种解析器/重写的东西,可以将它改为适当的Teradata函数。

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

 SELECT SUBSTRING(first_name FROM 1 FOR 7) FROM testtab

答案 1 :(得分:1)

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

注意:这需要使用带有ODBC连接的SQL Assistant运行,并具有以下特殊设置:

在SQL Assistant中,转到工具 - > “定义ODBC数据源” - > <<点击所需的Teradata DNS>> - >配置 - >选项 - > “启用Legacy Parser”

答案 2 :(得分:0)

要解决,请转到配置OBDC - >选项 - >选中"启用旧版解析"

答案 3 :(得分:0)

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

e.g。 SEL {fn MONTH(DATE)};