比较kdb中的一个字符串是否大于另一个字符串

比较kdb中的一个字符串是否大于另一个字符串,kdb,Kdb,我想检查两个字符串中的哪个更大,我使用了下面的逻辑,但在少数情况下失败 q){$[1b in x>=y;x;y]}["b";"b"] "b" q){$[1b in x>=y;x;y]}["c";"b"] "c" q){$[1b in x>=y;x;y]}["azz";"dff"] // Wrong output (Reason for failure - "azz">"dff" --> 011b) "azz" / desired output dff 请建议另一种

我想检查两个字符串中的哪个更大,我使用了下面的逻辑,但在少数情况下失败

q){$[1b in x>=y;x;y]}["b";"b"]
"b"
q){$[1b in x>=y;x;y]}["c";"b"]
"c"
q){$[1b in x>=y;x;y]}["azz";"dff"] // Wrong output (Reason for failure - "azz">"dff" --> 011b)
"azz" / desired output dff
请建议另一种方法来获得所提供字符串中最大的字符串


由于比较运算符逐字符进行比较,因此在“azz”和“dff”中,如果只有在将“dff”中的“d”和“azz”中的“a”进行比较后,输出才能显示为“dff”,因为“a”小于“d”。

您可以将字符串转换为符号并使用等。。这些运算符执行符号的词典比较。


在中使用
1b等同于本例中的任何一种,因为
“azz”>“dff”
等同于
011b
。由于“azz”中的两个字母大于“dff”,您的条件值将为true

最好将x和y强制转换为符号并进行比较,因为这将使用1布尔值进行计算:

(`$“azz”)>=`$“dff”
0b

{$[(`$x)>=`$y;x;y]}[“azz”;“dff”]
“dff”

或者,您可以对desc order进行排序,并获取第一个结果:

{first desc(x;y)}[“azz”;“dff”]

“dff”

您能否澄清最大字符串的含义,并明确说明您希望输出的内容?请使用示例进行更新。请参阅答案
q) `azz < `dff
1b
q) not first iasc ("azz"; "dff")
1b