如果 SQL 查询中 JSL 列表上的项目不存在,如何跳过该项目?大家好,
我有一个从 JSL 列表查询的脚本。但是,只要数据库中不存在某些内容,它就会出错。有没有办法可以跳过不存在的内容并继续处理列表中的下一个值?
我有这个例子:
NameList = {"John","Jane","Anna","Dominic"};
NameItems = ConcatItems(NameList ,",");
Eval (Parse (Evalinsert("\[
db= Open Database("Server Specs", "SELECT * FROM dbNames WHERE name IN (^NameItems ^)")
]\")));;例如,John 不存在,它应该跳过并与 Jane、Anna 或 Dominic 一起去
自动化和脚本编写视窗回复:如果 SQL 查询中 JSL 列表上的项目不存在,如何跳过该项目?除非在列表中找不到任何值,否则 IN 运算符不应失败。您应该能够使用 Try() 函数来保护此问题
Eval (Parse (Evalinsert("\[
db= Try( Open Database("Server Specs", "SELECT * FROM dbNames WHERE name IN (^NameItems ^)") )
]\")));
另外,根据我的经验,您的 IN 运算符应该用引号将调用中的字符元素括起来。
WHERE name IN ('John','Jane','Anna','Dominic')
将 JSL 更改为以下内容会将 IN 运算符调用更改为上面的形式
NameList = {"John","Jane","Anna","Dominic"};
NameItems = "'" || ConcatItems(NameList ,"','") || "'";回复:如果 SQL 查询中 JSL 列表上的项目不存在,如何跳过该项目?*编辑
没有看到吉姆的回应。不过反响不错。
名称列表的格式似乎不正确。
约翰、简、安娜、多米尼克
应该是“约翰”、“简”、“安娜”、“多米尼克”
如果你想使用 Concat Items(),你需要这样做:
NameItems = "'" || Concat Items(NameList,"','") || "'"