我需要为以下表达式创建一个功能声明
select from table where not any venue like/:("tst1";tst2)
这就是我现在拥有的:
(enlist(~:;(any;((/:;like);`venue;(enlist;a)))))
其中a可以为"tst1"
或("tst1";tst2)
这是问题。我想将a
作为参数传递,但是它不起作用。
该行应如下所示:
(enlist(~:;(any;((/:;like);`venue;(enlist;"tst1";"tst2")))))
任何人都有建议。我有点卡住了。
答案 0 :(得分:3)
首先让我们使用PS C:\Windows\system32> Measure-Command -Expression {
$ProcessCPU = Get-WmiObject Win32_PerfFormattedData_PerfProc_Process | Select-Object @{Name='Id';Expression={[int]$_.IDProcess}}, PercentProcessorTime
$Processes = Get-Process -IncludeUserName |
Select-Object `
@{Name='Id';Expression={[int]$_.Id}},
@{Name='Name';Expression={[string]$_.Name}},
@{Name='Description';Expression={[string]$_.Description}},
@{Name='Path';Expression={[string]$_.Path}},
@{Name='Company';Expression={[string]$_.Company}},
@{Name='Username';Expression={[string]$_.UserName}},
@{Name='SessionId';Expression={[string]$_.SessionId}},
@{Name='StartTime';Expression={[string](($_.StartTime).ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssZ"))}},
@{Name='MemoryMB';Expression={[int]([math]::Round($_.WorkingSet/1MB,2))}}
$Output = $ProcessCPU + $Processes | Group-Object -Property Id
}
TotalSeconds : 2.9656969
来查看树:
parse
接下来,让我们使用q)parse "select from table where not any venue like/:(\"tst1\";\"tst2\")"
?
`table
,,(~:;(max$["b"];((/:;like);`venue;(enlist;"tst1";"tst2"))))
0b
()
技巧在您的like语句中构建元素列表
enlist,
让我们拼凑起来
q)0N!enlist,`a`b;
(enlist;`a;`b)
// let's define 'a' and use the same method
q)a:("tst1";"tst2")
q)enlist,a
enlist
"tst1"
"tst2"
q)0N!enlist,a;
(enlist;"tst1";"tst2")
请注意,您在那里没有使用任何形式的正则表达式,因此最好使用直接匹配:
// define table
q)table:([]venue:("tst1";"tst2";"tst3"))
q)?[`table;enlist(not;(any;((/:;like);`venue;enlist,a)));0b;()]
venue
------
"tst3"
HTH,肖恩