如何比较 GlideRecord.addQuery() 方法中的 2 列?
How to compare 2 columns in GlideRecord.addQuery() method?
假设我有一个 table 数据为:
id col_1 col_2
----------------------
11 10000 20000
12 13000 10000
是否可以检索 col_1 < col_2
的 id
?。所以这里的预期输出是 id:11
。
据我所知,不可能在 GlideRecord 查询中执行此操作。我们无法再访问 sql,所以我认为这根本不可能。
但是如果您可以在 table 中添加一列,您可以这样做 :
id col_1 col_2 sup
---------------------------
11 10000 20000 true
12 13000 10000 false
您可以使用 Insert & update 业务规则设置 sup 标志,这样您就可以在 GlideRecord 查询中查询 sup 字段。
您使用特殊字段比较运算符比较字段:
var gr = new GlideRecord("u_table_name");
gr.addQuery("col_1", "SAMEAS", "col_2"); // i.e. WHERE col_1 = col_2
gr.query();
允许比较两个不同字段的运算符 table:
SAMEAS
:字段=其他字段
NSAMEAS
: 字段 != 其他字段
GT_FIELD
: 字段 > 其他字段
LT_FIELD
: 字段 < 其他字段
GT_OR_EQUALS_FIELD
: 字段 >= 其他字段
LT_OR_EQUALS_FIELD
: 字段 <= 其他字段
如有疑问,您可以随时为过滤器 UI 支持的任何内容编写 GlideRecord 查询。只需在 UI、运行 中构建您想要的过滤器,然后右键单击面包屑(过滤器构建器正上方 UI),然后 select "Copy URL".
这将为您提供编码查询 URL,您可以直接将其粘贴到 GlideRecord api gr.addEncodedQuery(...)
或使用 3 参数 gr.addQuery(columnName, operatorName, value)
进行解构,在这种情况下动态字段比较运算符,value
arg 是 other 列名。
是的,这绝对有可能。关于字段比较,我首先想到的是列表过滤器。您需要尝试验证是否可以从列表视图中过滤掉这些记录。如果是,您当然可以使用 GlideRecord API 查询它们。如果无法查询它们,我们还有其他选项,例如动态过滤器甚至数据库视图都可以提供帮助。
所以我为数据添加了一个示例table,您需要确保列是整数类型并应用我的过滤器
相关查询是从 u_col_1LT_FIELDu_col_2 过滤器中复制的。您可以根据过滤器运算符获取不同的编码查询。
现在下一步是进行 table 查询以获取所需的 ID。
var myTable = new GlideRecord('u_custom_table'); //Table to query
myTable.addEncodedQuery('u_col_1LT_FIELDu_col_2'); //Replace your filter query
myTable.query();
while(myTable.next()){
gs.print("Id: "+myTable.u_id); //Replace id column
}
以及通过后台脚本执行时的输出
现在可以应用相同的方法从服务中查询任何记录 table。
假设我有一个 table 数据为:
id col_1 col_2
----------------------
11 10000 20000
12 13000 10000
是否可以检索 col_1 < col_2
的 id
?。所以这里的预期输出是 id:11
。
据我所知,不可能在 GlideRecord 查询中执行此操作。我们无法再访问 sql,所以我认为这根本不可能。
但是如果您可以在 table 中添加一列,您可以这样做 :
id col_1 col_2 sup
---------------------------
11 10000 20000 true
12 13000 10000 false
您可以使用 Insert & update 业务规则设置 sup 标志,这样您就可以在 GlideRecord 查询中查询 sup 字段。
您使用特殊字段比较运算符比较字段:
var gr = new GlideRecord("u_table_name");
gr.addQuery("col_1", "SAMEAS", "col_2"); // i.e. WHERE col_1 = col_2
gr.query();
允许比较两个不同字段的运算符 table:
SAMEAS
:字段=其他字段NSAMEAS
: 字段 != 其他字段GT_FIELD
: 字段 > 其他字段LT_FIELD
: 字段 < 其他字段GT_OR_EQUALS_FIELD
: 字段 >= 其他字段LT_OR_EQUALS_FIELD
: 字段 <= 其他字段
如有疑问,您可以随时为过滤器 UI 支持的任何内容编写 GlideRecord 查询。只需在 UI、运行 中构建您想要的过滤器,然后右键单击面包屑(过滤器构建器正上方 UI),然后 select "Copy URL".
这将为您提供编码查询 URL,您可以直接将其粘贴到 GlideRecord api gr.addEncodedQuery(...)
或使用 3 参数 gr.addQuery(columnName, operatorName, value)
进行解构,在这种情况下动态字段比较运算符,value
arg 是 other 列名。
是的,这绝对有可能。关于字段比较,我首先想到的是列表过滤器。您需要尝试验证是否可以从列表视图中过滤掉这些记录。如果是,您当然可以使用 GlideRecord API 查询它们。如果无法查询它们,我们还有其他选项,例如动态过滤器甚至数据库视图都可以提供帮助。
所以我为数据添加了一个示例table,您需要确保列是整数类型并应用我的过滤器
相关查询是从 u_col_1LT_FIELDu_col_2 过滤器中复制的。您可以根据过滤器运算符获取不同的编码查询。
现在下一步是进行 table 查询以获取所需的 ID。
var myTable = new GlideRecord('u_custom_table'); //Table to query
myTable.addEncodedQuery('u_col_1LT_FIELDu_col_2'); //Replace your filter query
myTable.query();
while(myTable.next()){
gs.print("Id: "+myTable.u_id); //Replace id column
}
以及通过后台脚本执行时的输出
现在可以应用相同的方法从服务中查询任何记录 table。