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"
我 运行 使用 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"