我使用SAS对Teradata运行以下查询,它运行正常
SELECT LEFT(first_name,7)
FROM testTab
但是,当我在Sql Assistant
中运行相同的查询时,会抛出错误:Expected something between keyword SELECT and keyword LEFT
。
在我的另一台计算机上,上面的代码在Sql Assistant
上运行。
所以,我的问题是,为什么LEFT
函数有时会起作用,有时它不起作用?
有很多变通方法,但我想知道这个LEFT
函数到底发生了什么?
答案 0 :(得分:4)
我不确定SAS版本是如何运行的,因为LEFT
不是Teradata中的功能。由于LEFT
,LEFT 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)};