使用“;AS“;alasql(AngularJS)中SQL语句中的子句

Using "AS" clause in SQL statement in alasql (AngularJS)

本文关键字:SQL 语句 子句 AngularJS AS alasql 使用      更新时间:2023-12-01

正如标题所描述的,我遇到了一个问题,当我试图在角度模块alasql的sql语句中使用As子句时,我会收到一条错误消息。

将显示以下错误消息:

错误:第1行出现分析错误:。。。shortcode AS短代码,fname AS全名-----------------------^应为"EOF"、"WITH"、"COMMA"、"RPAR"、"PIVOT"、"UNPIVOT"、"REMOVE"、"ORDER"、"WHERE"、"UNION"、"INTERSECT","EXCEPT"、"FROM"、"INTO"、"GROUP"、"LIMIT"、"OFFSET"、"END"、"ELSE","Semicon"、"GO"、"LIERAL"

我不确定,我做错了什么。在wiki中,他们也毫无问题地使用了AS子句。

我的角度代码非常简单,如下所示:

vm.btnExport = function () {
   alasql('SELECT shortcode AS Short code, fname AS fullname INTO XLSX("test.xlsx",{headers:true}) FROM ?', [vm.list]);
};

如果不是所有的话,大多数数据库都不允许在表、列名或别名中使用空格。在Alasql中使用方括号[]。因此,对于您的情况,您可以将Short Code重命名为Short_Code,也可以使用[Short Code]。然而在Alasql中有很多关键字。所以为了安全起见,我把所有不是关键字的东西都放在方括号里。

alasql('SELECT [shortcode] AS [Short code], [fname] AS [fullname] INTO XLSX("test.xlsx",{headers:true}) FROM ?', [vm.list]);

我已经找到了问题的解决方案。它是AS子句后面的空格字符。

只允许定义一个词,而不允许定义两个词。

示例:

vm.btnExport = function () {
   alasql('SELECT shortcode AS Short_Code, fname AS fullname INTO XLSX("test.xlsx",{headers:true}) FROM ?', [vm.list]);
};