【问题标题】:Does intersystems cache have a wildcard to search global node?系统间缓存是否有通配符来搜索全局节点?
【发布时间】:2019-07-12 12:06:52
【问题描述】:
有时我想用通配符搜索一个字符,我不想搜索所有全局节点来查找特定字符。所以我想知道是否可以使用任何通配符来匹配全局节点上的特定字符。好像我想用^G("*s*")在^G中找到^G("abc")
【问题讨论】:
标签:
intersystems-cache
intersystems
【解决方案1】:
没有办法使用低级 $order/$query 函数作为 @
kazamatzuri 正确地说,但您可以使用 %Library.Global:Get 类查询 - 第一个参数是命名空间,第二个参数是模式字符串。您可以在类本身或此处https://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?KEY=GGBL_managing#GGBL_managing_view
中获得有关模式语法的文档
这是一个使用 CALL 语句的示例 - 假设我们要在 USER 命名空间的 ^%SYS global 中以“D”开头的所有全局节点:
DEV>d $system.SQL.Shell()
SQL Command Line Shell
----------------------------------------------------
The command prefix is currently set to: <<nothing>>.
Enter <command>, 'q' to quit, '?' for help.
[SQL]DEV>>call %Library.Global_Get('USER','^%SYS("D":"E"')
1. call %Library.Global_Get('USER','^%SYS("D":"E"')
Dumping result #1
Name Value Name Format Value Format Permissions
^%SYS("DBRefByName","CONFIG-ANALYTICS") ^^f:\trakcare\config\db\analytics\ 1
^%SYS("DBRefByName","CONFIG-APPSYS") ^^f:\trakcare\config\db\appsys\ 1 1
^%SYS("DBRefByName","CONFIG-AUDIT0") ^^f:\trakcare\config\db\audit0\ 1 1
^%SYS("DBRefByName","CONFIG-AUDIT1") ^^f:\trakcare\config\db\audit1\ 1 1
^%SYS("DBRefByName","CONFIG-AUDIT2") ^^f:\trakcare\config\db\audit2\ 1 1
【解决方案2】:
没有。
您必须自己使用 $ORDER 或 $QUERY 来实现。虽然有模式匹配和正则表达式实用程序。
干杯!