提问人:user2134182 提问时间:8/21/2022 最后编辑:user2134182 更新时间:8/23/2022 访问量:275
Google Apps 脚本:SQL 查询中的数组参考 (Javascript/AlaSQLGS)
Google Apps Script: Array Reference in SQL Query (Javascript/AlaSQLGS)
问:
我无法让我的查询接受我的 WHERE 条目:
const query = "SELECT MATRIX Col1 FROM ? WHERE Col1 IN (name) ";
var res = alasql(AlaSQLGS.transformQueryColsNotation(query), [values]);
console.log(res.length);
console.log(res[0][0][0]);
res.length 返回 0,并且 res[0][0][0] 出现以下错误: “TypeError:无法读取未定义的属性'0'”
name 的条目来自一个数组,但在尝试了我能想到的一切之后,我创建了一个简单的 .没用。我什至无法让它输入名称:var name = "Tribiani, Joe"
const query = "SELECT MATRIX Col1 FROM ? WHERE Col1 IN ('Tribiani, Joe') ";
我让它工作的唯一方法是:但在这种情况下我也不能使用变量“name”,必须写进去。const query = "SELECT MATRIX Col1 FROM ? WHERE Col1 LIKE ('Tribiani, Joe%') ";
有人知道我做错了什么吗?如何正确指向 AlaSQL 查询中的数组元素?
答:
0赞
Cooper
8/22/2022
#1
这行得通吗?
var name = "Tribiani, Joe";
const query = `SELECT MATRIX Col1 FROM ? WHERE Col1 IN (${name})`;
我会把它放在评论中,但反引号没有正确显示。
评论
0赞
user2134182
8/23/2022
不,不工作。
0赞
TheMaster
8/22/2022
#2
语法为
alsql(query, [query params list])。
添加到参数列表name
在表达式中使用需要前缀。编号:IN
@
const query = "SELECT MATRIX [0] FROM ? WHERE [0] IN @(?) ",
name = ['Tribiani', 'Joe'],
res = alasql(query, [values, name]);
console.log(res);
现场演示:
/*<ignore>*/console.config({maximize:true,timeStamps:false,autoScroll:false});/*</ignore>*/
const data = [[1,2,3],[4,5,6],[1,4,8]];
const name = [1,2];
const res = alasql('SELECT MATRIX [0] FROM ? WHERE [0] IN @(?)',[data, name]);
console.log(res)
<script src="https://gh-canon.github.io/stack-snippet-console/console.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]"></script>
评论
0赞
user2134182
8/23/2022
我现在收到一个解析错误:SyntaxError:第 1 行的解析错误:...从?其中 [0] 在 ?-----------------------^ 期待 'LITERAL', 'BRALITERAL', 'LPAR', 'AT', 'IF', 'REPLACE', 'DATEADD', 'DATEDIFF', 'INTERVAL',得到 'QUESTION' 我做了一个带有 GAS 代码的清理表,并将其发布在上面的原始问题中。
0赞
TheMaster
8/23/2022
@user2134182 检查编辑。现在应该修复。
0赞
user2134182
8/23/2022
非常感谢您对此的帮助 - 看起来我有一个数组/对象问题。还没有弄清楚到底是什么问题。一旦我这样做,我就会更新它。我目前可以以这种方式运行代码而不会出现问题: const query = “SELECT MATRIX [0] FROM ?其中 [0] 喜欢 ('“ +name+”%')“;
0赞
TheMaster
8/23/2022
@user2134182 我的代码是否引发了错误?
0赞
user2134182
8/23/2022
每次查看代码没有错误 - 它返回一个空数组。这意味着它无法在“值”中找到“名称”。values 数组是一个 3D 数组,我还没有弄清楚如何填充它,以便查询实际上可以找到“名称”并返回第 3 维中的值。不知道为什么它适用于 LIKE(它真的不应该)。我正在努力将其拆开并弄清楚如何正确设置它。我是 JS 的新手,可能需要一点时间才能整理好它。
评论
[0]
?你是说吗?Col1